gpt4 book ai didi

Python字典初始化?

转载 作者:太空狗 更新时间:2023-10-30 01:45:04 28 4
gpt4 key购买 nike

我不确定这是错误还是功能。我有一个要用空列表初始化的字典。

让我们说

keys =['one','two','three']
sets = dict.fromkeys(keys,[])

我观察到的是,如果您将任何项目附加到任何列表,所有列表都会被修改。

sets = dict.fromkeys(['one','two','three'],[])
sets['one'].append(1)

{'three': [1],'two': [1], 'one': [1]}

但是当我使用循环手动执行时,

for key in keys:
sets[key] = []
sets['one'].append(1)

{'three': [], 'two': [], 'one': [1]}

我认为第二种行为应该是默认行为。

最佳答案

这就是 Python 中的工作方式。

当您以这种方式使用 fromkeys() 时,您将以对同一列表的三个引用结束。当您更改一个列表时,所有三个列表都会发生变化。

这里也可以看到相同的行为:

In [2]: l = [[]] * 3

In [3]: l
Out[3]: [[], [], []]

In [4]: l[0].append('one')

In [5]: l
Out[5]: [['one'], ['one'], ['one']]

同样,这三个列表实际上是对同一个列表的三个引用:

In [6]: map(id, l)
Out[6]: [18459824, 18459824, 18459824]

(注意他们有相同的 id)

关于Python字典初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10401180/

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