如何使用列表作为值迭代字典

时间:2015-10-12 18:46:08

标签: python

假设我有以下字典:

x = {'a': [1,2,3], 'b': [4,5,6], 'c':[5,6,7]}

我需要将其转换为三个类似的字典:

{'a':1,'b':4,'c':5}
{'a':2,'b':5,'c':6}
{'a':3,'b':7,'c':7}

基本上三个字典具有相同的键和值,对应于每个值中的相同索引。

我可以迭代地执行此操作,但我想知道是否有一个简洁而有效的方法,而不需要嵌套的for循环。

2 个答案:

答案 0 :(得分:0)

假设您知道一个密钥(例如a)并且您知道这些列表的长度都相同..

[ dict((k,v[i]) for k,v in x.items()) for i in range(len(x['a'])) ]

答案 1 :(得分:0)

您可以为每个字典创建一个值列表,然后迭代以获取字典列表:

x = {'a': [1,2,3], 'b': [4,5,6], 'c':[5,6,7]}

myValues = list(zip(*x.values()))

myList = [dict(zip(x.keys(), item)) for item in myValues]

print(myList)

[{'a': 1, 'b': 4, 'c': 5}, {'a': 2, 'b': 5, 'c': 6}, {'a': 3, 'b': 6, 'c': 7}]
相关问题