gpt4 book ai didi

Pythonic 方式并行迭代字典内的列表作为字典

转载 作者:行者123 更新时间:2023-11-30 22:13:09 25 4
gpt4 key购买 nike

我意识到这个问题的标题可能不会立即非常清楚,所以举个例子:
我的字典包含如下列表(假设其中没有其他内容):

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 - 方法来做到这一点。

类似问题:

  • this没有明确涉及迭代字典中包含的列表 - 我的专门是关于它的,
  • this不涉及字典中的并行列表,
  • this不涉及听写。

最佳答案

您可以直接将zipdict.values一起使用

例如:

packed = {
'names': ['a', 'b', 'c', 'd'],
'values': ['A', 'B', 'C', 'D']
}

keysValue = packed.keys()
for pack in zip(*packed.values()):
print( dict(zip(keysValue, pack)) )

输出:

{'values': 'A', 'names': 'a'}
{'values': 'B', 'names': 'b'}
{'values': 'C', 'names': 'c'}
{'values': 'D', 'names': 'd'}

或者使用列表理解在一行中

keysValue = packed.keys()
print( [dict(zip(keysValue, pack)) for pack in zip(*packed.values())] )
#[{'values': 'A', 'names': 'a'}, {'values': 'B', 'names': 'b'}, {'values': 'C', 'names': 'c'}, {'values': 'D', 'names': 'd'}]

关于Pythonic 方式并行迭代字典内的列表作为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50874572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com