Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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在dict extend值中显示列表_Python_List - Fatal编程技术网

python在dict extend值中显示列表

python在dict extend值中显示列表,python,list,Python,List,如何创建列表字典?以下是我尝试过的: zigzag=dict.fromkeys(范围(1,4),[])) 对于范围(1,4)内的i: Z字形[i]。扩展(范围(i,13,4)) 我期望得到的是: { 1: [1,5,9,13], 2: [2,6,10], 3: [3,7,11] } 但实际结果在每个值中都有相同的列表: { 1: [1, 5, 9, 2, 6, 10, 3, 7, 11], 2: [1, 5, 9, 2, 6, 10, 3, 7, 11], 3: [1, 5, 9, 2, 6

如何创建列表字典?以下是我尝试过的:

zigzag=dict.fromkeys(范围(1,4),[]))
对于范围(1,4)内的i:
Z字形[i]。扩展(范围(i,13,4))
我期望得到的是:

{
1: [1,5,9,13],
2: [2,6,10],
3: [3,7,11]
}
但实际结果在每个值中都有相同的列表:

{
1: [1, 5, 9, 2, 6, 10, 3, 7, 11],
2: [1, 5, 9, 2, 6, 10, 3, 7, 11],
3: [1, 5, 9, 2, 6, 10, 3, 7, 11]
}
我不知道结果是怎么发生的。如何获得预期答案?

来自以下文档:

fromkeys()
是返回新字典的类方法。值默认为
None
。所有的值都只引用一个实例,因此,值作为一个可变对象(如空列表)通常没有意义。要获得不同的值,请使用dict理解

在Python中,可变对象(如列表)的赋值不会创建新对象:它们只是对现有对象进行新引用。因此,您看到的是,字典中的每个值实际上都引用了您传递到
dict.fromkeys()
中的同一个空列表

相反,你可以简单地做

zigzag={}
对于范围(1,4)内的i:
Z字形[i]=列表(范围(i,14,4))
或使用类似于重新推荐的文档:

zigzag={i:list(范围(i,14,4))表示范围(1,4)中的i}
进一步阅读Python中可变与不可变数据类型:

关于
range()
此外,如果您希望
13
出现在
zigzag[1]
中,则应使用停止值
14
,而不是
13
。停止值是独占的。从以下文件:

对于正阶跃,范围r的内容由公式
r[i]=start+step*i
确定,其中
i>=0
r[i]