Python基础知识(八)—字典
字典 dict
定义
由一系列键值对组成的可变散列容器。
散列:每条记录无序。
键必须惟一且不可变(字符串/数字/元组),值没有限制。
字典内存图:
基础操作
创建字典:
字典名 = {键1:值1,键2:值2}(键不能相同,值可以相同)
字典名 = dict (可迭代对象)
添加/修改元素:
语法:字典名[键] = 数据
dict01["qtx"] = 100
说明:
键不存在,创建记录。
键存在,修改映射关系。
添加另一个字典
dict={"a":22,"d":3,"c":33} dict01={"v":23,"y":3,"b":33} dict01.update(dict)#{'v': 23, 'y': 3, 'b': 33, 'a': 22, 'd': 3, 'c': 33} print(dict01)
获取元素:变量 = 字典名[键] # 没有键则错误
遍历字典:
for 键名 in 字典名:
字典名[键名]
for 键名,值名 in 字典名.items():
遍历 #得到的是键 dict01={'a': 'b', 'c': 'd', 'qtx': 100, 'zc': 90} for key in dict01: print(key,) #遍历键 a c qtx zc print(dict01[key]) #遍历值 b d 100 90 # 得到的是键值对的元组 for item in dict01.items(): print(item[0]) #遍历键 a c qtx zc print(item[1]) #遍历值 b d 100 90 for key,value in dict01.items(): print(key) #遍历键 a c qtx zc print(value) #遍历值 b d 100 90 # 获取所有值 for value in dict01.values(): print(value) #遍历值 b d 100 90
dict={"a":22,"d":3,"c":33} #返回指定键的值,如果值不在字典中返回default值 print(dict.get("aa"))#None print(dict.get(1))#None #和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default print(dict.setdefault("a"))#22 print(dict.setdefault("aa"))#None
#以列表返回可遍历的(键, 值) 元组数组 print(dict.items())#dict_items([('a', 22), ('d', 3), ('c', 33)]) #返回一个迭代器,可以使用 list() 来转换为列表 print(dict.keys())#dict_keys(['a', 'd', 'c']) #返回一个迭代器,可以使用 list() 来转换为列表 print(dict.values())#dict_values([22, 3, 33])
语句:删除元素:
del 字典名[键]
先判断元素是否在字典里 if "xx" in dict01: del dict01["xx"] print(dict01)
随机返回并删除字典中的一对键和值(一般删除末尾对)。
print(dict.popitem()) #('aa', None)
清除字典
print(dict01.clear()) #清除None
字典推导式
定义:使用简易方法,将可迭代对象转换为字典。
语法:
{键:值 for 变量 in 可迭代对象}
{键:值 for 变量 in 可迭代对象 if 条件}
# 1 2 3 4 ... 10 --> 数:平方 #传统式 dict01 = {} for item in range(1, 10): dict01[item] = item ** 2 print(dict01) #推导式 dict02 = {item: item ** 2 for item in range(1, 10)} print(dict02) #{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
字典 VS 列表
都是可变容器。
获取元素方式不同,列表用索引,字典用键。
字典的插入,删除,修改的速度快于列表。
列表的存储是有序的,字典的存储是无序的。