![](/img/trans.png)
[英]Creating dictionary from list of lists and obtain the maximum keys in python
[英]How to get the maximum number, from many lists in a python dictionary, by list index
我有一本看起来像这样的字典:
my_dict = {'list_1': [1,2,3,4,5],
'list_2': [3,4,1,0,0],
'list_3': [1,2,3,0,6]}
list_
中的所有my_dict
都具有相同的长度(在本例中为5
)。
我想获得一个长度为5
的列表( final_list
),该列表将具有my_dict
的keys
作为元素,该位置的相应列表的元素是最高的。 如果有平局,则应出现所有键。
输出应该是这样的: ['list_2', 'list_2', 'list_1|list_3', 'list_1', 'list_3']
有什么想法可以有效地实现这一目标吗?
要获得最大元素,您可以执行以下操作:
tmp = [[(v, k) for v in lst] for k, lst in my_dict.items()]
t2 = map(sorted, zip(*tmp))
print([lst[-1][1] for lst in t2])
更改最后一行以考虑具有最大值的几个项目。
为了完整起见,这是对最后一行所需的更改(它相对高效..):
def find_max_labels(lst):
maxval = lst[-1][0]
labels = []
for val, label in reversed(lst):
if val != maxval:
break
labels.append(label)
return '|'.join(reversed(labels))
print([find_max_labels(lst) for lst in t2])
输出:
['list_2', 'list_2', 'list_1|list_3', 'list_1', 'list_3']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.