我有一个数组数组,就像这样...
[['Abradolf Lincler', 4], ['Abradolf Lincler', 4], ['Scary Terry', 4], ['Abradolf Lincler', 4], ['Scary Terry', 4], ['Scary Terry', 4], ['Abradolf Lincler', 4], ['Scary Terry', 4], ['Scary Terry', 4], ['Abradolf Lincler', 4], ['Abradolf Lincler', 4], ['Abradolf Lincler', 4], ['Summer Smith', 4], ['Summer Smith', 4], ['Summer Smith', 4], ['Abradolf Lincler', 4], ['Summer Smith', 4], ['Summer Smith', 4]]我希望能够扫描每个数组,如果数组中已经存在元素0,则将它们合并并将第一个元素相加在一起。例如,Summer Smith有5个实例。代码应该识别出这是同一个玩家,因此将Summer Smith的所有分数相加,使得Summer Smith的总分数为20。它应该为每个玩家做这件事。所以这一切看起来就像是,
[['Harry',20], ['Jake', 16]]....我试着..。
for array in arrays:
if array[0] in [not sure what to do now]发布于 2018-11-14 08:08:15
您可以使用itertools.groupby来执行以下操作:
from itertools import groupby
l = [['Abradolf Lincler', 4], ['Abradolf Lincler', 4], ['Scary Terry', 4], ['Abradolf Lincler', 4], ['Scary Terry', 4], ['Scary Terry', 4], ['Abradolf Lincler', 4], ['Scary Terry', 4], ['Scary Terry', 4], ['Abradolf Lincler', 4], ['Abradolf Lincler', 4], ['Abradolf Lincler', 4], ['Summer Smith', 4], ['Summer Smith', 4], ['Summer Smith', 4], ['Abradolf Lincler', 4], ['Summer Smith', 4], ['Summer Smith', 4]]
res = [[name, sum(s[1] for s in score)] for name, score in groupby(sorted(l, key=lambda x: x[0]), key=lambda x: x[0])]它等同于循环:
res = []
for name, score in groupby(sorted(l, key=lambda x: x[0]), key=lambda x: x[0]):
res.append([name, sum(s[1] for s in score)])并返回:
>>> res
[['Abradolf Lincler', 32], ['Scary Terry', 20], ['Summer Smith', 20]]https://stackoverflow.com/questions/53291206
复制相似问题