Python-将键值对添加到数组中的字典中

标签 python arrays dictionary

问题在标题中。我无法让它工作:

>>> data = [{}] * 2
>>> data[1].update({3:4})
>>> data
[{3: 4}, {3: 4}]

键值对添加到数组的所有元素。我预计会收到:

[{}, {3: 4}]

最佳答案

问题在于

data = [{}] * 2

创建一个列表,其中两次包含相同的字典。

为了说明这一点,让我们看一下 id(data[0])id(data[1]):

>>> data = [{}] * 2
>>> data
[{}, {}]
>>> id(data[0])
4490760552
>>> id(data[1])
4490760552            

请注意,id(data[0]) 和 id(data[1]) 是相同的,因为列表中的两个条目引用同一个对象

你可能想要的是

>>> d2 = [{} for i in range(2)]
>>> d2[0][4] = 'a'
>>> d2
[{4: 'a'}, {}]

关于Python-将键值对添加到数组中的字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33312644/

相关文章:

c++ - 当为将放入数组的字符串列表动态分配内存时,是否可以在程序的后面添加到该列表?

arrays - perl丢弃映射操作中的第一个数组元素

python - 在 python 中解析以分号分隔的文件以创建 CSV

arrays - Swift:将字典组合成一个数组

python - Pandas 数据框 : Remove secondary upcoming same value

python 子进程正在覆盖用于 stdout 的文件 - 我需要它附加到文件 (windows)

php - 是否有 Python 的 RedBeanPHP 等效项?

python - 为什么我的 RegEx 在 RegEx 中匹配,但在 Python 中不匹配?

javascript - 将字符串数组转换为对象数组

function - Clojure - 自动将映射条目转换为函数参数的语法糖?