亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

精通 Python 字典:创建、操作与进阶技巧

Python 字典

本综合指南解释 Python 字典——如何创建、访问、增删元素,并利用内置方法。

视频:Python 字典存储键值对

Python 字典是键值对的无序集合。每个条目将唯一、不可变的键与任意类型的值关联。


创建 Python 字典

定义字典很简单:将逗号分隔的键值对放入花括号 {}。键必须不可变(字符串、数字或不可变元素的元组)且唯一;值可以是任意类型且可重复。

# 空字典
my_dict = {}
# 整数键字典
my_dict = {1: 'apple', 2: 'ball'}
# 混合键字典
my_dict = {'name': 'John', 1: [2, 4, 3]}
# 使用 dict()
my_dict = dict({1:'apple', 2:'ball'})
# 从键值对序列
my_dict = dict([(1,'apple'), (2,'ball')])

以上方法创建相同字典结构。


访问字典元素

字典值通过键检索,用方括号 [] 或 get() 方法。方括号在键缺失时引发 KeyError;get() 默认返回 None。

# get 与 [] 获取元素对比
my_dict = {'name': 'Jack', 'age': 26}
# 输出: Jack
print(my_dict['name'])
# 输出: 26
print(my_dict.get('age'))
# 访问缺失键返回 None
print(my_dict.get('address'))
# KeyError
print(my_dict['address'])

输出

Jack 26 None Traceback (most recent call last): File "<string>", line 15, in <module> print(my_dict['address']) KeyError: 'address'

修改与添加字典元素

字典可变。给现有键赋值更新其值;给新键赋值添加新条目。

# 修改与添加字典元素
my_dict = {'name': 'Jack', 'age': 26}
# 更新值
my_dict['age'] = 27
# 输出: {'age': 27, 'name': 'Jack'}
print(my_dict)
# 添加项
my_dict['address'] = 'Downtown'
# 输出: {'address': 'Downtown', 'age': 27, 'name': 'Jack'}
print(my_dict)

输出

{'name': 'Jack', 'age': 27} {'name': 'Jack', 'age': 27, 'address': 'Downtown'}

从字典移除元素

用 pop() 删除指定键并返回其值。popitem() 移除任意键值对,clear() 清空字典。del 关键字可删除单个条目或整个变量。

# 从字典移除元素
# 创建字典
squares = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# 移除特定项,返回其值
# 输出: 16
print(squares.pop(4))
# 输出: {1: 1, 2: 4, 3: 9, 5: 25}
print(squares)
# 移除任意项,返回 (key,value)
# 输出: (5, 25)
print(squares.popitem())
# 输出: {1: 1, 2: 4, 3: 9}
print(squares)
# 移除所有项
squares.clear()
# 输出: {}
print(squares)
# 删除字典本身
del squares
# 报错
print(squares)

输出

16 {1: 1, 2: 4, 3: 9, 5: 25} (5, 25) {1: 1, 2: 4, 3: 9} {} Traceback (most recent call last): File "<string>", line 30, in <module> print(squares) NameError: name 'squares' is not defined

Python 字典方法

下表列出常用字典方法及其用途。许多在后续示例中演示。

方法描述
clear()移除字典所有项
copy()返回字典浅拷贝
fromkeys(seq[, v])从 seq 创建新字典,每个键设为 v(默认 None)
get(key[,d])返回 key 的值;缺失返回 d(默认 None)
items()返回字典 (键, 值) 对视图
keys()返回字典键视图
pop(key[,d])删除 key 并返回其值或 d;键缺失且未提供 d 时引发 KeyError
popitem()移除并返回任意 (键, 值) 对;空字典引发 KeyError
setdefault(key[,d])返回 key 的值;缺失则插入 key 值 d(默认 None)并返回 d
update([other])从 other 插入或更新键值对,覆盖现有键
values()返回字典值视图

示例用法:

# 字典方法
marks = {}.fromkeys(['Math', 'English', 'Science'], 0)
# 输出: {'English': 0, 'Math': 0, 'Science': 0}
print(marks)
for item in marks.items():
    print(item)
# 输出: ['English', 'Math', 'Science']
print(list(sorted(marks.keys())))

输出

{'Math': 0, 'English': 0, 'Science': 0} ('Math', 0) ('English', 0) ('Science', 0) ['English', 'Math', 'Science']

Python 字典推导式

字典推导式提供从可迭代对象构建字典的简洁语法。模式为 {key: value for element in iterable}。

# 字典推导式
squares = {x: x*x for x in range(6)}
print(squares)

输出

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

等价命令式版本:

squares = {}
for x in range(6):
    squares[x] = x*x
print(squares)

输出

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

推导式可包含多个循环和 if 过滤。示例:仅奇数平方。

# 带 if 条件的字典推导式
odd_squares = {x: x*x for x in range(11) if x % 2 == 1}
print(odd_squares)

输出

{1: 1, 3: 9, 5: 25, 7: 49, 9: 81}

更多字典推导式见 Python 文档。


其他字典操作

字典成员测试

用 in 操作符检查键是否存在;不检查值。

# 字典键成员测试
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# 输出: True
print(1 in squares)
# 输出: True
print(2 not in squares)
# 成员测试仅针对键非值
# 输出: False
print(49 in squares)

输出

True True False

遍历字典

直接遍历键,再访问值。

# 遍历字典
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for i in squares:
    print(squares[i])

输出

1 9 25 49 81

字典内置函数

all()、any()、len()、sorted() 等标准函数常用于字典。

函数描述
all()所有键为真(或字典为空)返回 True
any()任一键为真返回 True;空字典返回 False
len()键值对数量
cmp()比较两字典(Python 3 已移除)
sorted()返回键的排序列表

示例:

# 字典内置函数
squares = {0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# 输出: False
print(all(squares))
# 输出: True
print(any(squares))
# 输出: 6
print(len(squares))
# 输出: [0, 1, 3, 5, 7, 9]
print(sorted(squares))

输出

False True 6 [0, 1, 3, 5, 7, 9]

Python

  1. 精通Python数据类型:实战指南
  2. 精通Python运算符:全面指南
  3. 精通Python Pass语句:实战指南
  4. 精通Python函数参数:位置、关键字与默认参数
  5. 精通 Python 迭代器:工作原理与自定义构建
  6. Python 闭包详解:嵌套函数如何捕获变量
  7. 精通 Python datetime:日期、时间与时区实战指南
  8. Python 语言概览:高级、可读、交互式与面向对象
  9. Python 数字类型详解:不可变数值数据的操作与数学函数
  10. Python 字符串完全指南:创建、访问、格式化与内置方法大全
  11. Python 元组详解:定义、使用与列表的核心区别
  12. Python 字典基础:键值对操作、访问与核心方法大全