【发布时间】:2018-06-15 11:21:45
【问题描述】:
我意识到这个问题的标题可能不是很清楚,所以举个例子:
我的 dict 包含如下列表(假设其中没有其他内容):
packed = {
'names': ['a', 'b', 'c', 'd'],
'values': ['A', 'B', 'C', 'D']
}
我想要做的是并行迭代每个列表(尽可能多),但是在每次迭代期间我都有一个包含每个列表的单个元素的字典。我想像这样:
for pack in smartIterate(packed): #how to "smartIterate"?
print(pack['names'], pack['values'])
#pack is equal to {'names':'a', 'values':'A'} in the first iteration
打印出来:
a, A
b, B
c, C
d, D
我意识到这可以通过显式迭代一个子列表的长度并在每次迭代期间构造一个字典来完成:
for i in range(len(packed.values()[0])):
pack = dict(zip(packed.keys(),[v[i] for v in packed.values()]))
但感觉有一种更清洁、更高效的方式 - pythonic - 可以做到这一点。
类似问题:
【问题讨论】:
-
不是重复的,因为这个问题的关键部分是将这些并行值放在一个字典中,其键可以区分这些值来自哪个列表。
标签: python dictionary