gpt4 book ai didi

python - 附加到一个 python 字典键出于某种原因附加到所有

转载 作者:太空狗 更新时间:2023-10-30 02:29:08 24 4
gpt4 key购买 nike

这是我的 python 代码(我使用的是 Python 2.7.6):

row_of_words = ['word 1', 'word 2']
hw = ['h1', 'h2']
TD = {}

TD = TD.fromkeys(hw, [])
# TD is now {'h1': [], 'h2': []}

for index in range(len(row_of_words)):
# This loops twice and in the first loop, index = 0 and in the second
# loop, index = 1

# Append 1 to the value of 'h1' (which is a list [])
# The value for 'h1' should now be [1].

# This loops twice to append 1 twice to the value of 'h1'.
TD['h1'].append(1)

>>>TD
{'h2': [1, 1], 'h1': [1, 1]}

正如您在上面两行中看到的,当我打印 TD 时,它显示 1 被附加到 h1h2。知道为什么它被附加到两者,即使我提到只将它附加到 TD['h1'] 吗?如何使它仅附加到“h1”的值?我评论了我的步骤,展示了我认为它是如何工作的。

最佳答案

继续我的评论,您可以使用字典理解:

TD = {key:[] for key in hw}

将为 hw 中的每个项目创建一个空列表。例如:

>>> hw = ['h1','h2']
>>> TD = {key:[] for key in hw}
>>> TD
{'h1': [], 'h2': []}
>>> TD['h1'].append(1)
>>> TD
{'h1': [1], 'h2': []}

回答你原来的问题:

改变一个列表会改变每个列表的原因是因为 dict.fromkey(seq,[value]) 是一个创建新字典的函数,其中 seq< 中的每个项目 将映射到可选参数 value。您传入一个空列表作为 value,这意味着您将每个键设置为指向对同一列表的引用。由于所有键都指向同一个列表,因此显然通过访问任何键来更改列表(尝试访问 h2,您会发现这是真的)将反射(reflect)所有键的更改。

关于python - 附加到一个 python 字典键出于某种原因附加到所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34010312/

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