字典
用{}来定义字典。
字典是Python中的内置数据结构之一,与列表一样是可变序列。
以键值对的方式存储序列,字典是一个无序的序列。
列表是有序的,第一个放在列表里的元素就在列表的第一个位置,第二个放在列表里的元素就在列表里第二个位置上,每个元素的是单个的。
字典是无序的,第一个放在字典里的元素不一定在第一个位置上,而且字典元素是一对,键:值。字典示意图:
字典是通过hash(key)函数计算元素所在的位置,所以在字典中的键是不可变序列。
实现原理,同key键查找value值得位置。
字典的创建原理
使用{},a={‘张三’:12,‘李四’:51}
或用内置函数dict(n=55,c=88,k=‘三四’)
b={'n':1,'m':3}
print(b)
a=dict(n=55,c=88)
print(a)
字典中元素的获取
使用[],在[]里是键。
用get(),例 字典.get()。
区别:
若用[],字典中不存在指定的key则抛出keyError异常。
get()方法取值,若字典中不存在指定key,并不会抛出keyError异常,而是返回None,可以通过参数设置默认的value,以便指定key不存在时返回。
B={'张三':100,'jack':666,'66':'王'}
print(B['66'])
#print(B['gg'])key不存在会报错
print(B.get('jack'))
print(B.get('gg'))#key不存在,输出None不会报错
print(B.get('gg',9999))#我们还可以自行设置一个默认输出值,key不存在时输出
key的判断
in ,指定的key在字典里返回True。
not in指定的key不在字典里返回True。
B={'张三':100,'jack':666,'66':'王'}
print('jack' in B)#True
print('jack' not in B)#False
字典的增删改
B={'张三':100,'jack':666,'66':'王'}
del B['jack']#删除了key-value,键值对的删除
print(B)
B.clear()#把字典里的元素全部清空了
print(B)
B['钱']=100#新增了一个键值对
print(B)
B['钱']=60#修改了键对应的值
print(B)
获取字典视图的三个方法
keys()获取字典里所有的键。
values()获取字典里所有的值。
items()获取字典里所有的键值对。
B={'张三':100,'jack':666,'66':'王'}
a=B.keys()#获取字典里所有键
print(a)
print(list(a))#把获取的键转化成列表
b=B.values()#获取了字典所有的值
print(b)
i=B.items()#获取字典里的键值对,元组
print(i)
print(list(i))#转化成列表后,有三个元素,每个元素是一个元组
字典元素的遍历
依次对字典里的元素进行获取。
for i in B:
print(i)
B={'张三':100,'jack':666,'66':'王'}
for i in B:
print(i)#把字典里的的键依次获取
print(i,B[i],B.get(i))#这就是依次获取键和值
字典的特点
1.字典里所有元素都是key-value一对的形式,key键不可以重复,但值value可以重复。
2.字典里的元素是无序得到。
3.字典里的键key必须是不可变对象。
4.字典也可以更具需要,动态的伸缩。
5.字典会浪费较大的内存,是一种使用空间换时间的结构。
字典生成式
内置函数zip():
用于将可迭代对象作为,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表。
a=['books','cars','house']
b=[100,200,300]
c={a.upper():b for a,b in zip(a,b)}#.upper()是让字母都大写
print(c)
若元素数量不匹配,b中元素多于a中的元,则在zip()打包过程中以元素少的进行匹配。