繁体   English   中英

如何通过列表索引从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_dictkeys作为元素,该位置的相应列表的元素是最高的。 如果有平局,则应出现所有键。

输出应该是这样的: ['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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM