【发布时间】:2017-07-27 22:19:03
【问题描述】:
我正在尝试从列表列表中创建字典。我创建了一个与我正在研究的类似内容的示例,如下所示:
lst1 = [['a','b','c'],['d','e','a'],['g','b','i']]
lst2 = [[1,8,2],[4,3,6],[7,9,0]]
我试过这样的
mydict = [dict(zip(keys,values)) for keys in lst1 for values in lst2]
print (mydict)
# Prints like this below
#[{'a': 1, 'b': 8, 'c': 2}, {'a': 4, 'b': 3, 'c': 6}, {'a': 7, 'b': 9, 'c': 0}, {'d': 1, 'e': 8, 'a': 2}, {'d': 4, 'e': 3, 'a': 6}, {'d': 7, 'e': 9, 'a': 0}, {'g': 1, 'b': 8, 'i': 2}, {'g': 4, 'b': 3, 'i': 6}, {'g': 7, 'b': 9, 'i': 0}]
我可以看到我正在做的错误是在lst1 循环内迭代lst2,因此键和值被多次分配。但我需要这样的输出
{{'a': 1, 'b': 8, 'c': 2}, {'d': 4, 'e': 3, 'a': 6}, {'g': 7, 'b': 9, 'i': 0}}
我想保留列表的结构并为字典创建一个键和值,通过它我可以获得字典的最大键。 所以我的最终目标是得到这个
"""
In the mydict
{{'a': 1, 'b': 8, 'c': 2},
{'d': 4, 'e': 3, 'a': 6},
{'g': 7, 'b': 9, 'i': 0}}
the key 'b' has max_value of 8,
the key 'a' has max_value of 6,
the key 'b' has max_value of 9.
#the output i need is [['b'],['a'],['b']]
"""
已编辑:
感谢大家的回答,迭代一旦找到最大值就停止,如何获取所有具有最大值的键。例如:
lst1 = [['a','b','c'],['d','e','a'],['g','b','i']]
lst2 = [[1,8,2],[4,3,6],[7,9,9]]
需要输出为
[['b'], ['a'], ['b','i']]
【问题讨论】:
-
为什么
max_mydict是一个列表列表? -
你为什么要创建字典来查找
max_mydict? -
抱歉打错了,我想要 max_mydict 看起来像这样。现在更正了
标签: python list dictionary