字典是什么
字典是无序、可变的容器型数据类型,元素以键值对存储,以键获值。
什么时候用字典:需要保存多个数据,并需要对数据(多个数据的意义不同)进行区分。
-
字典是容器型数据类型,容器的标志
{}
,多个元素用逗号隔开。 -
字典的元素都是键值对,以键获值。{key1:value1,key2:value2,…}
-
字典中元素: 键值对
- 键 - 不可变;唯一(一般是字符串)
- 值 - 任何类型的数据;可重复
-
字典是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。键可能是数、字符串或元组。
字典的增删查
查 - 获取字典的值
-
获取单个元素对应的值:
-
字典[key]: 获取字典中指定key对应的值(如果key不存在报错)
-
字典.get(key): 获取字典中指定key对应的值(如果key不存在返回None)
# 获取单个值 # 方法一: dog = {'name': '程程', 'age': 3, 'breed': '哈士奇', 'gender': '公', 'weight': 20} dog_name = dog['name'] print(dog_name) # 程程 # 没有对应的key会报错 # print(dog['height']) # 方法二: get_name = dog.get('name') print(get_name) # 没有对应的key不会报错 print(dog.get('fan')) # key不存在时,放回默认值 print(dog.get('fan', 0)) """ 程程 None 0 """
-
-
遍历:
相比于检查列表是否包含指定的值,检查字典是否包含指定的键的效率更高。数据结构
越大,效率差距就越大。
-
方法一: 变量取到的值是字典中的key。
(此方法效率最高)
for 变量 in 字典:
循环体
-
方法二: 遍历获取所有的值
for 变量 in 字典.values():
循环体
-
方法三: 获取所有的key和value
for 变量1,变量2 in 字典.items():
循环体
print("====遍历====")
print("====方法一=====")
# 遍历
# 方法一
for i in dog:
print(dog[i])
print("====方法二=====")
# 方法二
for i in dog.values():
print(i)
print("====方法三=====")
# 方法三
for k, v in dog.items():
print(k, ':', v)
"""
====遍历====
====方法一=====
程程
3
哈士奇
公
20
====方法二=====
程程
3
哈士奇
公
20
====方法三=====
name : 程程
age : 3
breed : 哈士奇
gender : 公
weight : 20
"""
增 - 添加键值对
- 字典[key]=value:如果key存在,就将key对应的值,修改成指定的值。如果key不存在,就是添加键值对。
- 字典.setdefault(key,value):不能修改,只能增加,如果key已存在,不添加操作。
删除
- del 字典[key]:删除指定key对应的键值对。(key不存在,会报错)
- 字典.pop(key):取出指定key对应的值,并放回指定的值。
- 字典.popitem():随机取出指定key对应的键值对,并放回键值对。
字典相关的操作
- 字典不支持加法和乘法运算
- 字典只支持比较相等,不支持比较大小。
- 保证键值对的个数、值一致,为True,否则False
in
和not in
:判断字典中是否存在指定的key。
相关函数
- len(字典): 统计字典中键值对的个数
- dict(数据): 将指定的数据转化成字典。
- 要求:
- 是容器型数据类型
- 数据中元素是有且只有两个元素的容器(小容器)
- 小容器中的第一个元素是不可变类型。
- 要求:
字典转成其他的数据类型
- bool(字典) - 空字典会转换成False,其他都是True
- list(字典):将字典的key作为列表的元素
- tuple(字典):将字典的key作为元组的元素
- str(字典):将字典的{}和键值对全部转换为字符串
相关的方法
- 字典.clear():将字典清空
- 字典.copy():复制一个字典并放回。(也复制了字典的内容)
- 字典.fromkeys(序列)/dict.fromkeys(序列):创建新的字典,字典的key传入序列中的元素,值是固定的None。(此序列元素类型不可变)
- 字典.fromkeys(序列,值)/dict.fromkeys(序列,值):创建新的字典,字典的key传入序列中的元素,值是指定的值。
- 字典.items():获取字典所有的key和value,返回一个容器,容器中的元素是元组,每个元组对应一个键值对。(不是列表)
- 字典.keys():获取字典所有的key,返回一个容器。(不是列表)
- 字典.values():获取字典所有的value,返回一个容器。(不是列表)
- 字典.update(序列):将序列转化为字典,用转换的字典更新指定的字典。
(不存在就添加,存在就修改)