Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中列表字典中元素的增量_Python_Dictionary - Fatal编程技术网

Python中列表字典中元素的增量

Python中列表字典中元素的增量,python,dictionary,Python,Dictionary,我有一个简单的代码: M = dict.fromkeys([0, 1, 2, 3, 4], [0, 0]) M[0][1] += 2 print(M) 为什么这是输出 {0: [0, 2], 1: [0, 2], 2: [0, 2], 3: [0, 2], 4: [0, 2]} 它会增加字典中列表的所有元素!我只想用键0增加列表的第二个元素,如下所示: {0: [0, 2], 1: [0, 0], 2: [0, 0], 3: [0, 0], 4: [0, 0]} M中的所有值都指向完全相同

我有一个简单的代码:

M = dict.fromkeys([0, 1, 2, 3, 4], [0, 0])
M[0][1] += 2
print(M)
为什么这是输出

{0: [0, 2], 1: [0, 2], 2: [0, 2], 3: [0, 2], 4: [0, 2]}
它会增加字典中列表的所有元素!我只想用键0增加列表的第二个元素,如下所示:

{0: [0, 2], 1: [0, 0], 2: [0, 0], 3: [0, 0], 4: [0, 0]}

M
中的所有值都指向完全相同的列表。证明:

>>> map(id, M.values())
[139986331512912, 139986331512912, 139986331512912, 139986331512912, 139986331512912]
如果更改它,它将影响所有关键点。尝试为每个键创建一个新列表:

>>> M = { k:[0,0] for k in [0, 1, 2, 3, 4] }
>>> M[0][1] += 2
>>> print(M)
{0: [0, 2], 1: [0, 0], 2: [0, 0], 3: [0, 0], 4: [0, 0]}

顺便说一句,如果
dict.fromkeys
采用的是价值结构,而不是价值本身(如中所示),那就更好了