【Python学习笔记二】

72 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情

字典

  • Python内置的数据结构之一,与列表一样是一个可变序列(可以增删改查的序列)
  • 以键值对的方式存储数据,字典是一个无序的序列

字典的实现原理

字典的实现原理与查字典类似,查字典是先根据部首或拼音查找相应的页码,Python中的字典是根据key查找value所在的位置

字典的创建

# 用{}创建字典
socres = {'张三': 100, '李四': 98, '王五': 43}
print(socres)
print(type(socres))
​
# 第二种创建dict()
student = dict(name='jack', age=20)
print(student)

字典的常用操作

字典中元素的获取

获取字典中的元素 1:socres['张三'] 2:gets()方法。socres.get('张三')

[]取值与使用get()取值的区别

  • []如果字典中不存在指定的key,抛出keyError异常
  • get()方法取值,如果字典中不存在指定的key,并不会抛出KeyError而是返回Nobe,可以通过参数设置默认的value,以便指定的key不存在时返回

key的判断,使用in和not in 指定的key在字典中存在返回True和在指定的key在字典中不存在返回True

字典元素的删除 del sorces['张三'] (删除指定的键值对key-value)

字典元素的新增 sorces['Jack']=90

获取字典视图的三个方法

key() : 获取字典中所有的Key

value():获取字典中所有的value

items(): 获取字典中所有的键值对key-value

字典元素的遍历

scores = {'张三': 100, '李四': 98, '王五': 43}
​
for item in scores:
    print(item, scores[item], scores.get(item))
    
张三 100 100
李四 98 98
王五 43 43 

字典的特点

  • 字典中的所有元素都是一个key-value对,key不允许重复,value可以重复
  • 字典中的元素是无序的
  • 字典中的key必须是不可变对象
  • 字典也可以根据需要动态的伸缩
  • 字典会浪费较大的内存,是一种使用空间换时间的数据结构

字典生成式

内置函数zip():用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表

#元素键值对一一对应,多余的不管
items = ['Fruit', 'Books', 'Others']
prices = [96, 78, 85, 100, 120]
​
d = {item: price for item, price in zip(items, prices)}
print(d)
#{'Fruit': 96, 'Books': 78, 'Others': 85}
​
​
#大写
items = ['Fruit', 'Books', 'Others']
prices = [96, 78, 85, 100, 120]
​
d = {item.upper(): price for item, price in zip(items, prices)}
print(d)
#{'FRUIT': 96, 'BOOKS': 78, 'OTHERS': 85}

元组

什么是元组

元组:Python内置的数据结构之一,是一个不可变序列

不可变序列与可变序列

  • 不可变序列:字符串,元组(没有增删改查的操作)
  • 可变序列:列表,字典(可以对序列执行增删改查操作,对象地址不发生更改)

元组的创建方式

  • 直接小括号
  • 使用内置函数tuple()
  • 只包含一个元组的元素需要使用逗号和小括号 t=(10,)
"""第一种创建方式,使用()"""
t = ('Python', 'World', 98) #括号可以省略不写
print(t)
print(type(t))
​
"""第二种创建方式,使用内置函数tuple()"""
t1 = tuple(('Python', 'World', 98))
print(t1)
print(type(t1))
​
"""
('Python', 'World', 98)
<class 'tuple'>
('Python', 'World', 98)
<class 'tuple'>
"""

为什么要将元组设置成不可变序列

  • 在多任务环境下,同时操作对象时不需要加锁
  • 因此,在程序中尽量使用不可变序列

注意事项:元组中存储的是对象的引用

  • 如果元组中对象中是不可变对象,则不能再引用其他对象
  • 如果元组中的对象是可变对象,则可变对象的引用不允许改变,但是数据可以改变

遍历元组

t = ('Python', 'World', 98)
​
for item in t:
    print(item)
    
"""
Python
World
98
"""