当前位置:首页>python>Python字典知识整理含思维导图(2026最新)

Python字典知识整理含思维导图(2026最新)

  • 2026-10-11 05:55:14
Python字典知识整理含思维导图(2026最新)
字典知识思维整理
字典知识思维导图整理

字典

  字典是Python中一种无序(逻辑上)、可变、键值对(key-value)形式的数据结构。每个键(key)对应一个值(value),通过键来快速查找值。

# 字面量语法# {'a': 1, 'b': 2}d = {'a': 1, 'b': 2}print(d)

核心特点:

  • 键必须唯一并且可哈希
  • 值可以是任意类型(包括列表、字典、集合等类型)
  • 通过键访问值,时间复杂度接近O(1)

创建字典

1.1 字面量创建

d = {'a': 1, 'b': 2}dd = {}print(d)     # {'a': 1, 'b': 2}print(dd)    # {} 空字典(注意:不是空集合)

1.2 构造函数创建

  • 键自动转换为字符串

    # 键自动转换为字符串# {'a': 1, 'b': 2}d1 = dict(a=1, b=2)print(d1)   # {'a': 1, 'b': 2}
  • 可迭代对象

    # 可迭代对象# {'a': 1, 'b': 2}d2 = dict([('a', 1), ('b', 2)])print(d2)   # {'a': 1, 'b': 2}
  • 搭配zip

    # 搭配zip# {'a': 1, 'b': 2}d3 = dict(zip(['a', 'b'], [1, 2]))print(d3)   # {'a': 1, 'b': 2}

1.3 字典推导式

字典推导式,必须带【键:值】结构:

# 字典推导式d4 = {x: x**2for x inrange(5)}print(d4)   # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

1.4 批量创建

根据键唯一的特性:

d5 = dict.fromkeys(['apple', 'orange', 'apple', 'pear'], 12)print(d5)    # {'apple': 12, 'orange': 12, 'pear': 12}

1.5 复制现有字典

import copyd6 = d5.copy()print(d6)d7 = copy.deepcopy(d5)print(d7)

浅拷贝 vs 深拷贝: 

      浅拷贝是键被复制,而值根据元素类型分可变类型和不可变类型;如果值是可变类型,那么修改或者增加值,键对应的值必然发生改变;如果值是不可变类型,本质上没有啥区别。 深拷贝是全部都被复制,递归复制所有层级,如果原来的数据或者被复制的数据被改变,两者不会相互影响,独立统一。


修改访问删除

# 访问、修改、删除# 访问 d8 = {'name': 'Alice', 'age': 18, 'gender': '女'}print(d8)                      # {'name': 'Alice', 'age': 18, 'gender': '女'}print(d8.get('name'))          # Aliceprint(d8.get('address'))       # Noneprint(d8.get('city', '杭州'))   # 将没有的提供默认值 也就是杭州print(d8)                      # {'name': 'Alice', 'age': 18, 'gender': '女'}# 修改# 添加键d8['Alice'] = 'Tom'print(d8)                      # {'name': 'Alice', 'age': 18, 'gender': '女', 'Alice': 'Tom'}# 修改已经有的键值d8['name'] = '小明'print(d8)                      # {'name': '小明', 'age': 18, 'gender': '女', 'Alice': 'Tom'}# 删除# 删除键值对(不存在会报错)# del d8['city']d8.pop('age')print(d8)                      # 键age对应的值被删除,{'name': '小明', 'gender': '女', 'Alice': 'Tom'}a = d8.popitem()print(a)                       # 删除并返回最后插入的键值对 ('Alice', 'Tom')print(d8)                      # {'name': '小明', 'gender': '女'}

常用内置方法速查

方法
作用
示例
d.keys()
返回所有键
list(d.keys())
d.values()
返回所有值
list(d.values())
d.items()
返回键值对元组
for k, v in d.items()
d.get(k, default)
安全取值
d.get('x', 0)
d.setdefault(k, v)
键不存在则设置默认值
d.setdefault('count', 0)
d.update(d2)
合并另一个字典
d.update({'x': 10})
d.pop(k)
删除并返回值
d.pop('key')
d.popitem()
删除最后插入项
k, v = d.popitem()

遍历字典

  • 遍历键:

    # 普通d9 = {'name': 'Alice', 'age': 18, 'gender': '女', 'address': '浙江杭州', 'city': '杭州'}for key in d9.keys():   # 或者使用for key in d9:print(key, d9[key])
  • 仅遍历值:

    d9 = {'name': 'Alice', 'age': 18, 'gender': '女', 'address': '浙江杭州', 'city': '杭州'}for value in d9.values():print(value)
  • 遍历键值:

    d9 = {'name': 'Alice', 'age': 18, 'gender': '女', 'address': '浙江杭州', 'city': '杭州'}for key,value in d9.items():print(f"键:{key},值:{value}")
  • 同时获取索引、键值:

    d9 = {'name': 'Alice', 'age': 18, 'gender': '女', 'address': '浙江杭州', 'city': '杭州'}for idx, (key , value) inenumerate(d9.items()):print(f"索引:{idx},键与值:{key}:{value}")

最新文章

随机文章