python的dict的用法
python的dict的用法大全
Python 中的
dict(字典) 是一种可变的、无序的(Python 3.7+ 保持插入顺序)、高效的键值对(key: value)映射数据结构。它的底层基于哈希表,查找和插入的速度极快。 [1, 2, 3]一、 字典的创建与初始化
- 大括号字面量:
d = {'name': 'Alice', 'age': 25} dict()构造函数:d = dict(name='Alice', age=25)- 空字典:
d = {}或d = dict() - 元组/列表转换:
d = dict([('name', 'Alice'), ('age', 25)]) fromkeys批量初始化:d = dict.fromkeys(['a', 'b', 'c'], 0)->{'a': 0, 'b': 0, 'c': 0}- 字典推导式:
d = {x: x**2 for x in range(3)}->{0: 0, 1: 1, 2: 4}[1, 2]
二、 基础操作(增、删、改、查)
1. 查(获取元素)
- 方括号取值:
d['name']。如果键不存在,会抛出KeyError异常。 get()安全取值:d.get('name', '默认值')。如果键不存在,返回默认值(不传默认值则返回None),不会报错。 [1]
2. 增 / 改(添加与修改)
- 直接赋值:
d['gender'] = 'female'。键存在则修改,不存在则新增。 update()批量更新:d.update({'age': 26, 'city': 'NY'})。用另一个字典或键值对更新当前字典。setdefault()预设值:d.setdefault('score', 100)。如果score不存在则写入并返回 100;如果存在则不修改,直接返回已有值。 [1, 2]
3. 删(删除元素)
del关键字:del d['age']。删除指定键,不存在会报KeyError。pop()方法:age = d.pop('age', None)。删除指定键并返回其值,可设置默认值防止报错。popitem()方法:key, val = d.popitem()。删除并返回字典的最后一个键值对。clear()方法:d.clear()。清空整个字典。 [1]
三、 字典的遍历与视图对象
字典的遍历通常使用视图对象,它们会随着字典的改变而实时更新。
- 遍历键:
for k in d.keys():或直接for k in d: - 遍历值:
for v in d.values(): - 遍历键值对:
for k, v in d.items():[1]
python
# 示例:
d = {'a': 1, 'b': 2}
for key, value in d.items():
print(f"Key: {key}, Value: {value}")
请谨慎使用此类代码。
四、 常用判断与成员操作
- 判断键是否存在:使用
in或not in关键字(注意:只检查键,不检查值)。pythonif 'name' in d: print("存在 name 键")请谨慎使用此类代码。 - 获取长度:
len(d)。返回键值对的总数。 [1]
五、 进阶与高阶技巧
1. 字典合并(Python 3.9+ 新特性)
可以使用
| 和 |= 运算符更优雅地合并字典。python
d1 = {'a': 1, 'b': 2}
d2 = {'b': 99, 'c': 4}
# 合并生成新字典(冲突时以后者为主)
d3 = d1 | d2 # {'a': 1, 'b': 99, 'c': 4}
# 原地更新
d1 |= d2 # d1 变为 {'a': 1, 'b': 99, 'c': 4}
请谨慎使用此类代码。
2. 双向/逆向解包
- 解包关键字参数:在函数调用时使用
**将字典转为函数的关键字参数。pythondef greet(name, age): print(f"{name} is {age}") info = {'name': 'Bob', 'age': 20} greet(**info)请谨慎使用此类代码。
3. 字典的排序
字典本身无序,但可以通过
sorted() 对其进行排序并输出列表。- 按键排序:
sorted(d.items(), key=lambda x: x[0]) - 按值排序:
sorted(d.items(), key=lambda x: x[1])
六、 字典扩展(高级标准库)
Python 的
collections 模块提供了几种极其强大的字典变体:defaultdict(带默认值的字典):避免频繁使用setdefault或判断键是否存在。pythonfrom collections import defaultdict # 自动将未初始化的键赋值为空列表 [] list_dict = defaultdict(list) list_dict['scores'].append(95)请谨慎使用此类代码。Counter(计数器):专门用于统计频次的字典。pythonfrom collections import Counter counts = Counter(['apple', 'banana', 'apple']) # {'apple': 2, 'banana': 1}请谨慎使用此类代码。ChainMap(链式映射):将多个字典在逻辑上合并为一个进行查找。
如果你在使用字典的过程中遇到了具体的应用场景(例如:多层嵌套字典提取、高频数据统计、或性能优化),可以告诉我,我来为你提供针对性的代码方案!
漫思
浙公网安备 33010602011771号