如何向Python字典中添加新键

如何向Python字典中添加新键

技术背景

在Python编程中,字典(dictionary)是一种非常重要的数据结构,它以键值对(key-value pairs)的形式存储数据。在实际开发中,我们经常需要向已有的字典中添加新的键值对。本文将详细介绍在Python中向字典添加新键的各种方法。

实现步骤

1. 创建字典

在添加新键之前,我们需要先创建一个字典。可以创建空字典,也可以创建带有初始值的字典。

1
2
3
4
5
6
7
8
# 创建空字典
data1 = {}
data2 = dict()

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

2. 插入/更新单个值

可以使用多种方式向字典中插入或更新单个值。

1
2
3
4
5
6
7
8
9
data = {'key': 'value'}

# 直接赋值
data['mynewkey'] = 'mynewvalue'

# 使用 update 方法
data.update({'mynewkey': 'mynewvalue'})
data.update(dict(mynewkey='mynewvalue'))
data.update(mynewkey='mynewvalue')

3. 插入/更新多个值

如果需要同时插入或更新多个值,可以使用 update 方法,在Python 3.9+ 中还可以使用 |= 操作符。

1
2
3
4
5
6
7
8
data = {'key': 'value'}
d = {'c': 3, 'd': 4}

# 使用 update 方法
data.update(d)

# Python 3.9+ 使用 |= 操作符
data |= d

4. 创建合并字典而不修改原始字典

在Python 3.5+ 中可以使用字典解包,Python 3.9+ 还可以使用 | 操作符。

1
2
3
4
5
6
7
# Python 3.5+
data1 = {'a': 1, 'b': 2}
data2 = {'c': 3, 'd': 4}
data3 = {**data1, **data2}

# Python 3.9+
data = data1 | data2

5. 删除字典中的项

可以使用 delpopclear 方法删除字典中的项。

1
2
3
4
5
6
7
8
9
10
data = {'key': 'value', 'mynewkey': 'mynewvalue'}

# 删除特定元素
del data['key']

# 删除键并返回值
value = data.pop('mynewkey')

# 清空整个字典
data.clear()

6. 检查键是否存在

可以使用 in 操作符检查键是否已经存在于字典中。

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

7. 遍历字典

可以使用不同的方法遍历字典中的键、值或键值对。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
data = {'a': 1, 'b': 2, 'c': 3}

# 遍历键
for key in data:
print(key)

# 遍历键值对
for key, value in data.items():
print(key, value)

# 遍历键
for key in data.keys():
print(key)

# 遍历值
for value in data.values():
print(value)

8. 从两个列表创建字典

可以使用 zip 函数将两个列表转换为字典。

1
2
3
list_with_keys = ['a', 'b', 'c']
list_with_values = [1, 2, 3]
data = dict(zip(list_with_keys, list_with_values))

核心代码

以下是一些向字典添加新键的核心代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 添加单个键值对
d = {'key': 'value'}
d['mynewkey'] = 'mynewvalue'

# 添加多个键值对
x = {1: 2}
d = {3: 4, 5: 6, 7: 8}
x.update(d)

# Python 3.9+ 使用 |= 操作符添加多个键值对
data = {'a': 1}
data |= {'b': 2, 'c': 3}

# Python 3.5+ 创建合并字典
data1 = {'a': 1, 'b': 2}
data2 = {'c': 3, 'd': 4}
data3 = {**data1, **data2}

# Python 3.9+ 使用 | 操作符合并字典
data = data1 | data2

最佳实践

1. 单个键值对添加

使用下标表示法(subscript notation)添加单个键值对,这种方法简单直接,且计算开销较小。

1
2
my_dict = {}
my_dict['new key'] = 'new value'

2. 多个键值对添加

使用 update 方法添加多个键值对,如果键名是合法的Python单词,也可以使用关键字参数的方式,这样代码更易读。

1
2
3
my_dict = {'new key': 'new value'}
my_dict.update({'key 2': 'value 2', 'key 3': 'value 3'})
my_dict.update(foo='bar', foo2='baz')

3. 避免使用 __setitem__ 方法

虽然 __setitem__ 方法可以用于添加键值对,但它的性能不如下标表示法,应尽量避免使用。

1
2
3
4
5
6
7
# 不推荐使用
d = {}
d.__setitem__('foo', 'bar')

# 推荐使用
d = {}
d['foo'] = 'bar'

4. 使用 collections.defaultdict

如果处理的字典总是包含相同的数据类型或结构,可以使用 collections.defaultdict,它可以简化新键的添加和赋值操作。

1
2
3
from collections import defaultdict
example = defaultdict(int)
example['key'] += 1

常见问题

1. 键已经存在的情况

如果键已经存在,使用直接赋值或 update 方法会覆盖原有的值。如果不想覆盖,可以使用 setdefault 方法。

1
2
3
mydict = {'a': 1, 'b': 2, 'c': 3}
mydict.setdefault('d', 4) # 添加新键
mydict.setdefault('a', 111) # 键已存在,不覆盖原有值

2. 向嵌套字典中添加键

如果需要向嵌套字典中添加键,可以使用 setdefault 方法先初始化嵌套字典。

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

3. 性能问题

对于少量键值对的添加,使用下标表示法性能较好;对于大量键值对的添加,使用 update 方法或 |= 操作符性能更好。

1
2
3
4
5
6
7
8
9
10
11
import timeit

# 少量键值对添加
t1 = timeit.timeit('dictionary = {"karga": 1, "darga": 2}; dictionary["aaa"] = 123123; dictionary["asd"] = 233;')
t2 = timeit.timeit('dictionary = {"karga": 1, "darga": 2}; dictionary.update({"aaa": 123123, "asd": 233})')

# 大量键值对添加
setup = "pairs = list(zip(range(5), range(5)))"
t3 = min(timeit.repeat("d={};d.update(pairs)", setup))
t4 = min(timeit.repeat("d={};for k,v in pairs: d[k] = v", setup))
t5 = min(timeit.repeat("d={};d |= pairs", setup))

如何向Python字典中添加新键
https://119291.xyz/posts/2025-05-09.how-to-add-new-keys-to-a-python-dictionary/
作者
ww
发布于
2025年5月9日
许可协议