gpt4 book ai didi

python - 如何在 Python 中增加字典列表

转载 作者:行者123 更新时间:2023-12-02 18:01:47 25 4
gpt4 key购买 nike

以下演示代码:

mydict = {}
mylist = []

mydict["s"] = 1
mydict["p"] = "hasprice"
mydict["o"] = 3
print(mydict)
mylist.append(mydict)

mydict["s"] = 22
mydict["p"] = "hasvat"
mydict["o"] = 66
print(mydict)
mylist.append(mydict)

print(mylist)

打印出以下结果:

[{'s': 22, 'p': 'hasvat', 'o': 66}, {'s': 22, 'p': 'hasvat', 'o': 66}]

我想到的唯一解释是 mydict 是通过引用分配的,因此列表项都指向同一个内存对象。是这个原因吗?

如何正确地将多个不同的词典附加到列表中?

我正在循环中构建每个 mydict 字典,然后想将其附加到列表中,我最终将其写入 JSON 文件。

最佳答案

mylist.append(mydict)

那么,你在这里做什么?您正在附加一个 dict 对象,对吗?

问题在于,在 Python 中,dict 是一种可变类型,它通过引用传递。

这就是为什么当您编辑 mydict 时,您也在编辑 mylist[0],因为它们都引用同一个对象。


要实现我认为您想要做的事情,只需执行以下操作:

mylist.append(mydict.copy())

这将创建一个不再引用 mydict 的副本。

复制应该在第一次调用.append时完成,否则你无论如何都会得到两个相同的dict,正如@sj95126指出的那样。


为了更好地理解我的答案,我强烈建议阅读以下内容:

关于python - 如何在 Python 中增加字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74223461/

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