将值添加到字典键作为列表循环

add value to dictionary key as list loop for

我正在尝试为键添加一个值列表。 我使用以下几行:

d = dict()

for i in range(5):
    d['key'].append(i)  

但我收到错误:KeyError: 'key'

预期输出为:{'key':[0,1,2,3,4]}

如何解决这个错误?

您可以使用 defaultdict 为缺少的键自动创建一个对象,在本例中是一个空列表。

from collections import defaultdict

d = defaultdict(list)

for i in range(5):
    d['key'].append(i)

print(d)
# defaultdict(<class 'list'>, {'key': [0, 1, 2, 3, 4]})

Python 无法知道键 key 的值是一个列表。首先,您应该初始化密钥,然后附加以下值:

d = dict()
d['key'] = []

for i in range(5):
    d['key'].append(i) 
    
print(d)
# {'key': [0, 1, 2, 3, 4]}

您不能附加到不存在的列表。先初始化d['key']

d = {'key': []}
for i in range(5):
    d['key'].append(i)  

给定 可能 包含 'key' 的字典,我会用 try/except 覆盖 KeyError 来写这个,如果它开始列表不存在

for i in range(5):
    try:
        d['key'].append(i)
    except KeyError:    # key not in d (yet)
        d['key'] = [i]  # start a new list

首先你想在这里完成什么?如果你想为那个键创建一个列表值,你应该像

d['key'] = [0, 1, 2, 3, 4]

无论如何,您的代码中的问题是您试图在不存在的列表中附加一个值。您的问题的解决方案可能是

d = dict()

for i in range(5):
    if 'key' not in d.keys():
        d['key'] = []
    else:
        d['key'].append(i)

另一种未提及的方式,用于单衬垫:

d = {'key' : [i for i in range(5)]}

这在python中叫做理解python comprehension

d = {}
xkey =1
i=[]
for x in range(5):
  i.append(x)
d[xkey] = i
print(d)

结果

{1: [0, 1, 2, 3, 4]}