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]
⚠️ 注意:字典的 key 必须是不可变且可哈希的对象(如字符串、数字、元组),而 listdict 等可变对象不能作为 key。 [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}")
请谨慎使用此类代码。

四、 常用判断与成员操作
  • 判断键是否存在:使用 innot in 关键字(注意:只检查键,不检查值)。
    python
    if '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. 双向/逆向解包
  • 解包关键字参数:在函数调用时使用 ** 将字典转为函数的关键字参数。
    python
    def 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 或判断键是否存在。
    python
    from collections import defaultdict
    # 自动将未初始化的键赋值为空列表 []
    list_dict = defaultdict(list)
    list_dict['scores'].append(95) 
    
    请谨慎使用此类代码。
  • Counter(计数器):专门用于统计频次的字典。
    python
    from collections import Counter
    counts = Counter(['apple', 'banana', 'apple']) # {'apple': 2, 'banana': 1}
    请谨慎使用此类代码。
  • ChainMap(链式映射):将多个字典在逻辑上合并为一个进行查找。

如果你在使用字典的过程中遇到了具体的应用场景(例如:多层嵌套字典提取、高频数据统计、或性能优化),可以告诉我,我来为你提供针对性的代码方案!
 

posted on 2026-08-24 02:59  漫思  阅读(16)  评论(0)    收藏  举报

导航