Python 字典添加新键的方法

Python 字典添加新键的方法

技术背景

在 Python 编程中,字典(dictionary)是一种非常常用的数据结构,它以键值对(key-value pairs)的形式存储数据。在实际开发中,我们经常需要向已有的字典中添加新的键值对。然而,Python 字典并没有提供 .add() 方法,因此需要使用其他方式来实现添加新键的操作。

实现步骤

1. 创建字典

在添加新键之前,首先需要创建一个字典。可以使用以下几种方式创建字典:

1
2
3
4
5
6
7
8
9
10
11
# 创建空字典
data = {}
# 或者
data = dict()

# 创建带有初始值的字典
data = {'a': 1, 'b': 2, 'c': 3}
# 或者
data = dict(a=1, b=2, c=3)
# 或者
data = {k: v for k, v in (('a', 1), ('b', 2), ('c', 3))}

2. 添加单个键值对

  • 使用下标赋值:这是最常用的方法,如果键不存在,则会添加新的键值对;如果键已存在,则会更新该键对应的值。
1
data['d'] = 4
  • 使用 update() 方法:可以使用字典或关键字参数的形式添加单个键值对。
1
2
3
data.update({'d': 4})
# 或者
data.update(d=4)

3. 添加多个键值对

  • 使用 update() 方法:可以传入一个字典来添加多个键值对。
1
2
new_data = {'e': 5, 'f': 6}
data.update(new_data)
  • Python 3.9+ 使用合并运算符 |:该运算符可以合并两个字典,返回一个新的字典,原字典不会被修改。
1
data = data | {'e': 5, 'f': 6}
  • Python 3.9+ 使用更新运算符 |=:该运算符会在原字典上进行更新,添加新的键值对。
1
data |= {'e': 5, 'f': 6}

4. 向嵌套字典中添加键值对

如果要向嵌套字典中添加键值对,可以使用 setdefault() 方法来确保内层字典存在。

1
2
mydict = {'id': {'id_num': 'xxxx', 'url': 'www.example.com'}}
mydict.setdefault('address', {})['work'] = '123 A St'

核心代码

以下是一个完整的示例代码,演示了如何向字典中添加新键:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 创建字典
data = {'a': 1, 'b': 2, 'c': 3}

# 添加单个键值对
data['d'] = 4
data.update({'e': 5})
data.update(f=6)

# 添加多个键值对
new_data = {'g': 7, 'h': 8}
data.update(new_data)

# Python 3.9+ 使用合并运算符
data = data | {'i': 9}

# Python 3.9+ 使用更新运算符
data |= {'j': 10}

# 向嵌套字典中添加键值对
nested_dict = {'outer': {}}
nested_dict['outer'].setdefault('inner', {})['key'] = 'value'

print(data)
print(nested_dict)

最佳实践

  • 添加单个键值对:使用下标赋值 data[key] = value 是最简单和最常用的方法,代码简洁,性能也较好。
  • 添加多个键值对:如果需要一次性添加多个键值对,使用 update() 方法或 Python 3.9+ 的合并运算符 | 和更新运算符 |= 会更方便。
  • 避免使用 __setitem__ 方法:虽然 __setitem__ 方法也可以用于添加键值对,但它的性能不如下标赋值,并且代码可读性较差,不建议使用。

常见问题

1. 键已存在时如何避免覆盖?

可以使用 setdefault() 方法,该方法会检查键是否存在,如果存在则返回该键对应的值;如果不存在,则添加该键值对并返回默认值。

1
2
3
data = {'a': 1}
value = data.setdefault('a', 2) # 返回 1,原字典不变
value = data.setdefault('b', 3) # 返回 3,字典变为 {'a': 1, 'b': 3}

2. 如何在不修改原字典的情况下添加新键?

可以使用字典解包(Python 3.5+)或 dict() 函数来创建一个新的字典。

1
2
3
4
params = {'a': 1, 'b': 2}
new_params = {**params, 'c': 3}
# 或者
new_params = dict(params, **{'c': 3})

3. 如何检查键是否已存在?

可以使用 in 关键字来检查键是否存在于字典中。

1
2
3
data = {'a': 1}
if 'a' in data:
print('键 a 已存在')

Python 字典添加新键的方法
https://119291.xyz/posts/2025-04-21.python-dictionary-adding-new-keys-methods/
作者
ww
发布于
2025年4月22日
许可协议