字典
采用映射关系,{ }表示,元素采用"键:值"即"key":"value"形式表示的一种数据形式
字典创建
字典中,每个元素包含两个部分(键和值)。创建字典时,键和值之间使用冒号分隔,相邻两个元素使用逗号分隔,所有元素放在一个"{}" 中,语法格式如下:dict_1={'key1':'value1','key2':'value2'}
- 使用映射函数创建字典
语法格式:dict_1=dict(zip(list1,list2))
- 使用给定关键字参数创建字典
语法格式:dict_1=dict(key1=value1,key2=value2)
还可以使用fromkeys()方法创建值为空的字典,语法格式:dict_1=dict.fromkeys(list1)
字典删除
函数 | 描述 |
---|
del dict/del dict[key] | 用于删除整个字典或某个元素 (元素不存在会报错) | dict.clear() | 删除字典中的元素,成为空字典 | dict.pop(key) | 删除与key对应的键值对,返回对应的值 | dict.popitem() | 随即返回并且删除字典中的一个键值对(适用于抽奖程序) |
注意事项
- 字典的键必须为不可变数据类型,如数字,字符串
- 字典中元素无序,通过索引访问元素将出现错误
- 通过关键字
in 判断键是否在字典中,返回布尔类型 - 不可使用‘+’和‘*’对元素进行拼接或重复
dict_1={'cat':'Tom','mouse':'Jerry'}
print('cat' in dict_1)
元素访问
使用字典一般很少直接输出其内容,需要通过指定键得到相应结果
操作 | 描述 |
---|
dict[key] | 获得键key对应的值 | dict[key]=new_value | 修改键对应的值 | dict.get(key[,default]) | 返回键key对应的值,key不存在返回default |
字典遍历(重要)
使用for循环遍历字典
格式 | 描述 |
---|
for i in dict.keys(): | 遍历字典的键 | for i in dict.values(): | 遍历字典的值 | for i,j in dict.items(): | 遍历字典的键和值 |
dict_2={'cat':'Tom','mouse':'Jerry','dog':'Spike'}
for i in dict_2.keys():
print(i)
for i in dict_2.values():
print(i)
for i,j in dict_2.items():
print(i,j,end=',')
上面的.keys()可以省略,得到相同的结果,但不建议这么做
字典嵌套
字典通过嵌套形成二重或多重字典,可以通过多维键或多重for 循环遍历多维字典
字典其它方法
方法 | 描述 |
---|
dict1.update(dict2) | 字典的拓展,两者有相同的键,值以后面的为主 | dict.setdefault(key,value) | 返回key对应的值,key不存在则将key以及设置的value作为将其添加到字典中 |
字典的复制
浅复制
操作类型 | 函数 | 描述 |
---|
浅复制 | dict.copy() | 只能复制一维字典,当字典中嵌套列表或者字典时,原字典中嵌套的列表或字典变化会导致复制出来的字典也发生改变 | 深复制 | copy.deepcopy(dict) | 复制出的字典是完全独立的,不随原字典的改变而改变 |
字典推导式
用于快速生成一个字典,字典推导式与列表推导式比较相似 案例一:生成包豪斯个随机数的字典 案例二:根据列表生成字典
字典与集合的比较
| 字典 | 集合 |
---|
基本表示 | dict_1={'cat':'Tom','mouse':'Jerry'} | set_1={1,2,3,4} | 创建一个空字典/集合 | dict_1={ } 或dict_1=dict() | set_1=set() |
|