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计算最小值的最有效的方法是什么?
答案 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)