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

永远的学习者

我希望键在每个字典中重复相同的方式。即从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上的文档。但是还没有弄清楚。

安德烈·凯斯利(Andrej Kesely)

对于所需的输出,您不需要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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

不同长度的两个列表的循环组合

使用Python中的单个键合并两个不同长度的字典列表

将两个元组合并到字典中时出现问题

如何遍历两个不同长度的字典?

合并两个不同长度的python列表

遍历两个不同长度的列表

如何交织两个不同长度的列表?

加入两个不同长度的列表

在python中合并两个不同长度的列表

遍历两个不同长度的列表

在较长列表的第n个元素上将两个不同长度的列表组合成元组

在Python中平均分布和压缩两个不同长度的列表

如何从(相同长度和相同键的)两个不同字典的值制作新字典,用作键值对

压缩两个不同长度的列表,并使用默认元素填充

使用lodash比较两个不同长度的数组

Bash,使用排序和连接连接两个不同长度的表

聚合不同长度的数组时,array_agg 方法出现问题

尝试合并两个不同数据帧的两列时出现问题?

从列表字典到两个相同长度的列表

查找两个不同长度的向量之间的所有组合

如何在科特林两个不同长度的名单组合?

根据通用值组合两个不同长度的向量,并扩展较短的向量

对两个不同工作簿中的范围运行 Find 方法时出现问题

如何使用两个相同的键和不同的值从 Python 中的三个不同列表创建字典?

具有相同长度的两个输入列表与具有不同长度的两个输入列表的行为不同(方案)

使用Jinja2在ansible中创建字典列表时出现问题

将两个双数相加时出现问题

比较两个 IloNum 值时出现问题

创建一个具有列表摘要值的字典/组合两个不同的字典以总结值