嵌套列表中的 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'}

a_list计算b_list中每个值的最小值的最python方法是什么?

首先将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]))

我建议将a_list的格式更改为其他格式。如果这并不容易,那么这是在numpy中执行此操作的方法。

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

最新更新