您可以先执行 group by。例如,我们可以使用defaultdict:
from collections import defaultdict
col = defaultdict(list)
for ai,bi in zip(a,b):
col[ai].append(bi)
现在字典 col 将如下所示:
>>> col
defaultdict(<class 'list'>, {'C': [3, 2], 'B': [4], 'D': [5], 'A': [2, 8, 1]})
现在我们可以计算字典中所有元素的平均值,例如:
>>> {key:sum(vals)/len(vals) for key,vals in col.items()}
{'C': 2.5, 'B': 4.0, 'D': 5.0, 'A': 3.6666666666666665}
您也可以使用zip 将其转换为两个元组:
a,b = zip(*[(key,sum(vals)/len(vals)) for key,vals in col.items()])
导致:
>>> a,b = zip(*[(key,sum(vals)/len(vals)) for key,vals in col.items()])
>>> a
('C', 'B', 'D', 'A')
>>> b
(2.5, 4.0, 5.0, 3.6666666666666665)
如果您想生成列表,可以将它们转换为列表:
a,b = <b>map(list,</b>zip(*[(key,sum(vals)/len(vals)) for key,vals in col.items()])<b>)</b>
这会导致:
>>> a,b = map(list,zip(*[(key,sum(vals)/len(vals)) for key,vals in col.items()]))
>>> a
['C', 'B', 'D', 'A']
>>> b
[2.5, 4.0, 5.0, 3.6666666666666665]