Python数据结构:字典Dict
本文来源于微信公众号 印象Python:如此Python,谁人不爱? 如有侵权,联系必删1. 字典(Dict)介绍字典是Python提供的一种常用的数据结构,用于存放具有映射关系的数据。字典是可变容器模型,可存储任意类型对象。字典相当于保存了两组数据:一组数据是关键数据,被称为key另一组数据可通过key来访问,被称为value字典中的key是非常关键的数据,而且程序需要通过key来访问value
本文来源于微信公众号 印象Python:如此Python,谁人不爱? 如有侵权,联系必删
1. 字典(Dict)介绍
字典是Python提供的一种常用的数据结构,用于存放具有映射关系的数据。
字典是可变容器模型,可存储任意类型对象。
字典相当于保存了两组数据:
- 一组数据是关键数据,被称为
key
- 另一组数据可通过
key
来访问,被称为value
字典中的key是非常关键的数据,而且程序需要通过key来访问value,因此字典中的key不允许重复。
2. 使用技巧
1. 增删改查
1. 添加
语法:
dict[key] = value
- 说明:key不存在则添加;key存在则替换
示例:
d = {'姓名': '张三', '性别': '男', '年龄': 28}
print('原始字典:', d)
# 原始字典: {'姓名': '张三', '性别': '男', '年龄': 28}
# 添加1:key不相同则添加
d['地址'] = '北京'
print('添加1:', d)
# 添加1: {'姓名': '张三', '性别': '男', '年龄': 28, '地址': '北京'}
# 添加2:key相同则更新(替换)
d['姓名'] = '张三丰'
print('添加2:', d)
# 添加2: {'姓名': '张三丰', '性别': '男', '年龄': 28, '地址': '北京'}
2. 删除
语法:
根据key删除:dict.pop(key)、del dict[key]
随机删除:dict.popitem()
- 本人试了下,可能是版本的缘故,popitem()会删除最后一个。因为Python3.6+中字典是有序的了
清空字典:dict.clear()
删除字典:del dict
示例:
d = {'姓名': '张三', '性别': '男', '年龄': 28}
print('原始字典:', d)
# 原始字典: {'姓名': '张三', '性别': '男', '年龄': 28}
# 删除1:根据key:pop(key)和 del d[key]
d.pop('性别')
print('删除1:', d)
# 删除1: {'姓名': '张三', '年龄': 28}
del d['性别']
print('删除1:', d)
# 删除4: {'姓名': '张三', '年龄': 28}
# 删除2:随机删除
d.popitem()
print('删除2:', d)
# 删除2: {'姓名': '张三', '性别': '男'}
# 删除3:清空字典
d.clear()
print('删除3:', d)
# 删除3: {}
# 删除5:删除字典
del d
print('删除5:', d)
# error: NameError: name 'd' is not defined
3. 修改
修改和新增一样,只是确保key存在。
d = {'姓名': '张三', '性别': '男', '年龄': 28}
print('原始字典:', d)
# 原始字典: {'姓名': '张三', '性别': '男', '年龄': 28}
d['姓名'] = '张三丰'
print('修改:', d)
# 修改: {'姓名': '张三丰', '性别': '男', '年龄': 28, '地址': '北京'}
4. 查询
语法:
v = dict[key]
- 不存在会抛出:
KeyError
v = dict.get(key)
- 不存在会返回
None
示例:
d = {'姓名': '张三', '性别': '男', '年龄': 28}
print('原始字典:', d)
# 原始字典: {'姓名': '张三', '性别': '男', '年龄': 28}
# 1. 查询1:使用key
name = d['姓名']
print('key查询:', name)
# key查询: 张三
# 2. 查询2:使用get()
age = d.get('年龄')
print('get查询:', age)
# get查询: 28
2. keys()、values()、items()
1. 获取keys()、values()、items()
d = {'姓名': '张三', '性别': '男', '年龄': 28}
print('keys:', d.keys())
# keys: dict_keys(['姓名', '性别', '年龄'])
print('values:', d.values())
# values: dict_values(['张三', '男', 28])
print('items:', d.items())
# items: dict_items([('姓名', '张三'), ('性别', '男'), ('年龄', 28)])
2. 通过key获取所有的键
d = {'姓名': '张三', '性别': '男', '年龄': 28}
for k in d:
print('key值为:', k)
'''
key值为: 姓名
key值为: 性别
key值为: 年龄
'''
3. 通过key获取所有的值
d = {'姓名': '张三', '性别': '男', '年龄': 28}
for k in d:
print('values值为:', d[k])
'''
values值为: 张三
values值为: 男
values值为: 28
'''
4. 通过value获取所有的值
d = {'姓名': '张三', '性别': '男', '年龄': 28}
for v in d.values():
print('values值为:', v)
'''
values值为: 张三
values值为: 男
values值为: 28
'''
5. 通过items()获取所有键值对
- 方式一:键值对以元组方式返回
d = {'姓名': '张三', '性别': '男', '年龄': 28}
for i in d.items():
print('items()值为:', i)
'''
items()值为: ('姓名', '张三')
items()值为: ('性别', '男')
items()值为: ('年龄', 28)
'''
- 方式二:键值对直接返回
d = {'姓名': '张三', '性别': '男', '年龄': 28}
for k, v in d.items():
print(k, v)
'''
姓名 张三
性别 男
年龄 28
'''
3. 合并字典
1. 使用update()方法合并
语法:
new_dict = dict1.update(dict2)
示例:
d1 = {'姓名': '张三', '性别': '男', '年龄': 28}
d2 = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
d1.update(d2)
print('d1:', d1)
# d1: {'姓名': '张三', '性别': '男', '年龄': 28, '刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
2. 使用**合并
语法:
new_dict = dict(dict1, **dict2)
示例:
d1 = {'姓名': '张三', '性别': '男', '年龄': 28}
d2 = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
d3 = dict(d1, **d2) # d3 = dict(**d1) 则d3是d1的复制
print('d3:', d3)
# d3: {'姓名': '张三', '性别': '男', '年龄': 28, '刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
3. 使用 | 合并
语法:
new_dict = dict1|dict2
示例:
d1 = {'姓名': '张三', '性别': '男', '年龄': 28}
d2 = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
d3 = d1|d2
print('d3:', d3)
# d3: {'姓名': '张三', '性别': '男', '年龄': 28, '刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
4. 检查键是否存在于字典中
方法:
key in dict
- 存在返回
True
,不存在返回False
示例:
dict = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
def key_in_dict(dict, key):
return key in dict
if __name__ == '__main__':
print(key_in_dict(dict, '刘备')) # True
print(key_in_dict(dict, '关羽')) # False
5. 获取字典中所有键组成的列表
语法:
list(dict.keys())
示例:
dict = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
def get_keys(dict):
return list(dict.keys())
if __name__ == '__main__':
print(get_keys(dict))
# ['刘备', '张飞', '曹操']
6. 获取字典中所有的值组成的列表
语法:
list(dict.values())
示例:
dict = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
def get_values(dict):
return list(dict.values())
if __name__ == '__main__':
print(get_values(dict))
# ['玄德', '翼德', '孟德']
7. 将字典所有键值对转换为元组列表
语法:
list(dict.items())
示例:
dict = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
def dict_to_list(dict):
return list(dict.items())
if __name__ == '__main__':
print(dict_to_list(dict))
# [('刘备', '玄德'), ('张飞', '翼德'), ('曹操', '孟德')]
8. 将两个列表组合成一个字典
语法:
dict(zip(list1, list2))
示例:
list1 = ['姓名', '性别', '年龄']
list2 = ['张三', '男', 28]
def list_to_dict(keys, values):
return dict(zip(keys, values))
if __name__ == '__main__':
# list1与list2和keys与values对应,list1为keys,list2为values
print(list_to_dict(list1, list2))
# {'姓名': '张三', '性别': '男', '年龄': 28}
- 注意:注意
list
顺序和keys/values
顺序,避免顺序搭配错误
9. 计算字典长度
语法:
len(dict)
示例:
dict = {'刘备': '玄德', '张飞': '翼德', '曹操': '孟德'}
print(len(dict))
# 3

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)