我希望键在每个字典中重复相同的方式。即从A开始直到E。但是似乎itertools.cycle每次循环都跳过一个。我也希望这些值遵循列表中的顺序(即从第一个字典中的1开始,到最后一个字典中的15结束)。请参见下面的代码:
import itertools
allKeys=['A','B','C','D','E']
a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
g=itertools.cycle(allKeys)
b=[]
for i in range(3):
dishDict=dict(zip(g,a))
b.append(dishDict)
b
产生:
[{'A': 11, 'B': 12, 'C': 13, 'D': 14, 'E': 15},
{'B': 11, 'C': 12, 'D': 13, 'E': 14, 'A': 15},
{'C': 11, 'D': 12, 'E': 13, 'A': 14, 'B': 15}]
如您所见,第二个字典中的键从B开始(而不是我想要的A)。此外,列表中所有三个字典的值都相同。
这就是我想要的输出看起来像:
[{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5},
{'A': 6, 'B': 7, 'C': 8, 'D': 9, 'E': 10},
{'A': 11, 'B': 12, 'C': 13, 'D': 14, 'E': 15}]
如果有人可以阐明正在发生的事情以及我应该采取的修复措施,我将非常感激。我已经花了很多时间自己解决该问题,并查看了itertools.cycle上的文档。但是还没有弄清楚。
对于所需的输出,您不需要cycle()
:
allKeys=['A','B','C','D','E']
a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
it = iter(a)
b=[]
for i in range(3):
dishDict=dict(zip(allKeys,it))
b.append(dishDict)
print(b)
印刷品:
[{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5},
{'A': 6, 'B': 7, 'C': 8, 'D': 9, 'E': 10},
{'A': 11, 'B': 12, 'C': 13, 'D': 14, 'E': 15}]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句