我有这个结构:
d = {
"a": [1, 2, 3],
"b": [4, 5, 6],
"c": [7, 8, 9],
}
列表的长度保证匹配。我想要一个可以循环的迭代器,它将为列表中的每一列提供一个字典,有点像每次将 zip 转换回具有原始键名的字典,如下所示:
>>> for i in iDictOfListsToDicts(d):
... print i
{"a": 1, "b": 4, "c": 7}
{"a": 2, "b": 5, "c": 8}
{"a": 3, "b": 6, "c": 9}
我确信我可以在生成器函数中破解一些东西,但我觉得我错过了可能有两件事的紧密组合,可能来自集合和/或 itertools。如果可能的话,我想要体面的效率和可读性。
我一直在玩弄这样开始的事情:
map(iter, d.values())
显然,这只是给了我一个没有相关键的值的迭代器列表,但我仍然无法在该列表上进行循环并得到我想要的。