像dict一样并行地迭代dict中的列表的Pythonic方法
我意识到这个问题的标题可能不会立即非常清楚,因此举个例子:像dict一样并行地迭代dict中的列表的Pythonic方法,python,dictionary,Python,Dictionary,我意识到这个问题的标题可能不会立即非常清楚,因此举个例子: 我的口述包含以下列表(假设其中没有其他内容): packed={ “名称”:['a','b','c','d'], '值':['A','B','C','D'] } 我想做的是并行地迭代这些列表中的每一个(尽可能多),但是在每次迭代过程中,我有一个dict,每个列表中只有一个元素。我想象这样的情况: 对于smartIterate中的pack(打包):#如何“smartIterate”? 打印(包装['names',包装['values']
我的口述包含以下列表(假设其中没有其他内容):
packed={
“名称”:['a','b','c','d'],
'值':['A','B','C','D']
}
我想做的是并行地迭代这些列表中的每一个(尽可能多),但是在每次迭代过程中,我有一个dict,每个列表中只有一个元素。我想象这样的情况:
对于smartIterate中的pack(打包):#如何“smartIterate”?
打印(包装['names',包装['values'])
#pack在第一次迭代中等于{'names':'a','values':'a'}
打印出:
a, A
b, B
c, C
d, D
我意识到这可以通过显式迭代一个子列表的长度并在每次迭代期间构造一个dict来实现:
范围内i的(len(packed.values()[0]):
pack=dict(zip(packed.key(),[v[i]表示packed.values()]中的v)
但感觉有一种更干净、更有效的方法可以做到这一点
类似问题:
- 没有明确涉及到迭代包含在dict中的列表-mine是专门针对它的
- 没有在一个目录中包含平行列表
- 不涉及口述
zip
与dict.values
Ex:
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'}
输出:
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'}
或者在一行中使用列表理解
我知道这一点,但这并没有给我一个中间指令。
pack
应该是{'names':'a','values':'a'}
在每次迭代中(第一次国际热核实验堆的例子)。我将突出我的问题中的相关句子,使之更清楚。更新的片段是你想要的吗?是的!一行的列表特别漂亮。谢谢:)可能的重复不是重复,因为这个问题的关键部分是在dict中有那些并行值,它们的键区分这些值来自哪个列表。