python字典的常用操作
1、创建字典
字典的键唯一,值不唯一
- 空字典
dict1 = dict() # {}
- 直接赋值
dict2 = {“name”: “echo”, “age”: 18} # {“name”: “echo”, “age”: 18}
- 直接将列表的元组转换为键值对,字典的value也可以是list
dict3 = dict([(1, 2), (3, 4), (“list”, [5, 6, 7])]) # {1: 2, 3: 4, ‘list’: [5, 6, 7]}
- fromkeys()函数
seq = [“a”, “b”, “c”]
dicts = dict.fromkeys(seq, 10) # {‘a’: 10, ‘b’: 10, ‘c’: 10}
2、添加键值对
- 添加新键值对
dict1[1] = 2 # [1:2]
- 修改键值对
dict2[“age”] = 24 # {“name”: “echo”, “age”: 24}
- 将dict2中的元素添加到dict1中
dict1.update(dict2) # {1: 2, ‘name’: ‘echo’, ‘age’: 24}
3、访问字典
3.1 访问字典中的值
- 直接访问,如果字典中没有这个键会报错
print(dict1[‘name’]) # echo
- get()函数,字典中没有此键也不会报错
dict1.get(‘name’) # echo
- 访问字典里的所有值
print(dict1.values()) # [2, ‘echo’, 24]
3.2 访问字典中的键
- 通过value返回key。提供一种思路,因为value不唯一,所以返回的是一个列表
key1 = list(dict1.keys())[list(dict1.values()).index(24)] # age 返回的是value=24多对应的key
- 访问所有键,以列表返回一个字典的所有键
print(dict1.keys()) # [1, ‘name’, ‘age’]
3.3 同时访问键值,以列表形式返回可遍历的(键,值)元组数组
print(dict1.items()) # [(1, 2), (‘name’, ‘echo’), (‘age’, 24)]
for k, v in dict1.items():
print(“k:v”, k, v)
4、 删除字典
- 删除某一个键值对
del dict1[1] # 删除key=1的键值对
print(dict1.pop(‘name’)) # 删除key=‘name’的键值对,返回值是键所对应的值
print(dict1.popitem()) # (‘age’, 24) 返回并删除字典中的最后一对键值对
- 清空字典
dict1.clear() # 变成空字典
- 从内存中删除整个字典
del dict1 # 再调用字典dict1会报错
5、合并两个字典
- 方法一、updata函数
dict2.update(dict3) # 将dict3合并到dict2中
- 方法二
dict4 = {**dict2, **dict3} # {‘name’: ‘echo’, ‘age’: 24, 1: 2, 3: 4, ‘list’: [5, 6, 7]}
6、字典解析
- 生成字典
dict5 = {k: random.randint(0, k + 1) for k in range(10)} # {0: 0, 1: 1, 2: 0, 3: 3, 4: 3, 5: 1, 6: 3, 7: 6, 8: 5, 9: 2}
- 交换dict5的键值
dict6 = {v: k for k, v in dict5.items()} # {1: 5, 2: 1, 4: 3, 5: 9,3: 7, 9: 8} # 因为key不能重复,所以有些key被覆盖了
7、整体代码
def dicttest():
"""
字典的常用操作
"""
# 1、创建字典:键唯一,值不唯一
# 空字典
dict1 = dict() # {}
# 直接赋值
dict2 = {"name": "echo", "age": 18} # {"name": "echo", "age": 18}
# 直接将列表的元组转换为键值对,字典的value也可以是list
dict3 = dict([(1, 2), (3, 4), ("list", [5, 6, 7])]) # {1: 2, 3: 4, 'list': [5, 6, 7]}
# fromkeys()函数
seq = ["a", "b", "c"]
dicts = dict.fromkeys(seq, 10) # {'a': 10, 'b': 10, 'c': 10}
# 2、添加键值对
# 添加新键值对
dict1[1] = 2 # [1:2]
# 修改键值对
dict2["age"] = 24 # {"name": "echo", "age": 24}
# 将dict2中的元素添加到dict1中
dict1.update(dict2) # {1: 2, 'name': 'echo', 'age': 24}
print(dict1)
# 3、访问字典
# 3.1 访问字典中的值
# 直接访问,字典中没有这个键会报错
print(dict1['name']) # echo
# get()函数,字典中没有此键也不会报错
dict1.get('name') # echo
# 访问字典里的所有值
print(dict1.values()) # [2, 'echo', 24]
# 3.2 访问字典中的键
# 通过value返回key,提供一种思路,因为value不唯一,所以返回的是一个列表
key1 = list(dict1.keys())[list(dict1.values()).index(24)] # age
# 访问所有键,以列表返回一个字典的所有键
print(dict1.keys()) # [1, 'name', 'age']
# 3.3 同时访问键值,以列表形式返回可遍历的(键,值)元组数组
print(dict1.items()) # [(1, 2), ('name', 'echo'), ('age', 24)]
for k, v in dict1.items():
print("k:v", k, v)
# 4、 删除字典
# 删除某一个键值对
del dict1[1]
print(dict1.pop('name')) # 返回值是键所对应的值
print(dict1.popitem()) # ('age', 24) 返回并删除字典中的最后一对键值对
# 清空字典
dict1.clear()
# 从内存中删除整个字典
del dict1
# 5、合并两个字典
dict2.update(dict3)
dict4 = {**dict2, **dict3} # {'name': 'echo', 'age': 24, 1: 2, 3: 4, 'list': [5, 6, 7]}
# 6、字典解析
dict5 = {k: random.randint(0, k + 1) for k in
range(10)} # {0: 0, 1: 1, 2: 0, 3: 3, 4: 3, 5: 1, 6: 3, 7: 6, 8: 5, 9: 2}
# 交换dict5的键值
dict6 = {v: k for k, v in dict5.items()} # {1: 5, 2: 1, 4: 3, 5: 9, 3: 7, 9: 8} 因为key不能重复,所以有些key被覆盖了
print(dict6)