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)