from collections import OrderedDict
from itertools import groupby
d = OrderedDict([('data(xxx_a1)_first_type', 0.12),
('data(xxx_a2)_first_type', 0.14),
('test(xx_b15)_second_type', 0.15)])
for k, v in groupby(d.items(), lambda x: "_".join(x[0].split("_")[-2:])):
val = [i for _, i in v]
print("{} {}".format(k, sum(val)/len(val)))
输出:
first_type 0.13
second_type 0.15
或者使用dict.setdefault
例如:
result = {}
for k, v in d.items():
key = "_".join(k.split("_")[-2:])
result.setdefault(key, []).append(v)
for k, v in result.items():
print("{} {}".format(k, sum(v)/len(v)))
import pandas as pd
list_Tuples = [(z, np.mean([y for x,y in v.items() if x.endswith(z)]), len([y for x,y in v.items() if x.endswith(z)])) for z in ['first_type', 'second_type']]
pd.DataFrame(list_Tuples, columns=['type', 'avg_val', 'count'])
使用
itertools.groupby
假设数据是有序的。你知道吗例如:
输出:
或者使用
dict.setdefault
例如:
输出:
其中
v
是数据。你知道吗假设只有两种类型(否则使用dict按类型存储列表):
相关问题 更多 >
编程相关推荐