gpt4 book ai didi

python - 在 Python 中填充空字典

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:57 26 4
gpt4 key购买 nike

我在用 Python 填充空字典时遇到问题

我声明字典如下:

my_dict = {}

我想一次用不同的键和不同的值填充它。我想在最后有这样的东西:

{"1":(1,2,3,4),"2":(4,5,6,7),"3":(8,9,10,11),"4":(12,13,14,15)}

因此我尝试按如下方式进行:

for i in range(4):
for j in range(4):
my_dict[str(i)].append(j)

但是我在第一个循环中有以下错误:

KeyError Traceback (most recent call last) in () 2 for i in range(4): 3 for j in range(4): ----> 4 my_dict[str(i)].append(j)
KeyError: '0'

我的代码中有一个更复杂的 for 循环,但我尽量做到更通用,以帮助其他可能有类似问题的人。最后,我想为每个键设置不同大小的值。

如果您知道为什么它不起作用以及如何解决它,请随时回答。

编辑

抱歉造成混淆,我想要如下内容:

{'1': [1, 2, 3, 4],
'2': [5, 6, 7, 8],
'3': [9, 10, 11, 12],
'4': [13, 14, 15, 16]})

最佳答案

有两个问题:

  1. 您不能附加到元组。元组是不可变的。
  2. 您不能附加到尚未为特定键定义的字典值。这是您的 KeyError 的原因。

使用 collections.defaultdict 可以缓解这些问题使用 list:

from collections import defaultdict

my_dict = defaultdict(list)

for i in range(4):
for j in range(4):
my_dict[str(i)].append(j)

print(my_dict)

defaultdict(list,
{'0': [0, 1, 2, 3],
'1': [0, 1, 2, 3],
'2': [0, 1, 2, 3],
'3': [0, 1, 2, 3]})

为了接近您想要的输出,您需要重新定义您的 range 对象:

my_dict = defaultdict(list)

for i in range(1, 5):
for j in range((i-1)*4+1, i*4+1):
my_dict[str(i)].append(j)

print(my_dict)

defaultdict(list,
{'1': [1, 2, 3, 4],
'2': [5, 6, 7, 8],
'3': [9, 10, 11, 12],
'4': [13, 14, 15, 16]})

关于python - 在 Python 中填充空字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51539434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com