嵌套列表中的Python最小值

时间:2019-02-06 15:36:02

标签: python

a_list = [['2', 0.5],
['2', 0.5],
['2', 1.0],
['1', 2.0],
['1', 3.5],
['1', 2.5]]

b_list = {'1', '2'}

对于b_list中的每个值,从a_list计算最小值的最有效的方法是什么?

2 个答案:

答案 0 :(得分:2)

首先将a_list预处理为可以快速访问b_list中与元素关联的所有值的内容。

import collections
a_dict = collections.defaultdict(list)
for k,v in a_list:
    a_dict[k].append(v)

# a_dict = {'1': [2.0, 3.5, 2.5], '2': [.5, .5, 1]}
# If you want to eliminate duplicate values, such as seen
# with the key '2', use a set instead of a list during the aggregation.

现在,只需将min应用于a_dict中的每个适当值

for b in b_list:
    print(min(a_dict[b]))

答案 1 :(得分:0)

我建议将a_list的格式更改为其他格式。如果那不容易,那么这就是在numpy中实现的方法。

np.min(np.vstack(a_list)[np.where(list(np.vstack(a_list)[:,0]=='1')[0]].astype(float), axis=0)