Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 3.x 结合使用itertools和zip从两个不同长度的列表创建字典时出现问题_Python 3.x_Loops_Dictionary_Itertools_Cycle - Fatal编程技术网

Python 3.x 结合使用itertools和zip从两个不同长度的列表创建字典时出现问题

Python 3.x 结合使用itertools和zip从两个不同长度的列表创建字典时出现问题,python-3.x,loops,dictionary,itertools,cycle,Python 3.x,Loops,Dictionary,Itertools,Cycle,我希望每个字典中的键都以相同的方式重复。也就是说,从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 ran

我希望每个字典中的键都以相同的方式重复。也就是说,从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()

印刷品:

[{'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()具体做了什么?@forever\u learner它将循环您提供的迭代器(或iterable)
cycle('ABCD')-->a B C D a B C D…
[{'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}]