[英]Given a dictionary of lists, is there a pythonic smart way of comparing the i-th element of each list and extract the maximum value?
我有一本像下面这样的字典:
{
'k0': [10, 35, 20],
'k1': [2, 0, 40],
'k2': [21, 400, 5],
}
我想获得一个列表,列表的每个第 i 个位置都有最大值。 例如,在这种情况下:
max_val_list = [21, 400, 40]
目前的做法(对我来说似乎太混乱了): 1. 提取列表:
k0_list = dicc_name[k0]
k1_list = dicc_name[k1]
k2_list = dicc_name[k2]
for i, item in enumerate(k0_list):
max_val_list.append(max([item, k1_list[i], k2_list[i]]))
我相信一定有一种方法可以直接从字典中以优雅的方式做到这一点,我想学习。
您可以zip
字典的值,并获取每列的最大值:
data = {
'k0': [100, 35, 20],
'k1': [2, 0, 40],
'k2': [21, 400, 5],
}
[max(col) for col in zip(*data.values())]
# [100, 400, 40]
如果你使用 numpy
>>> import numpy as np
>>> np.max([*data.values()],axis = 0).tolist()
[100, 400, 40]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.