有两个列表。一个是code_list,另一个是points
code_list= ['ab','ca','gc','ab','we','ca']
points = [30, 20, 40, 20, 10, -10]
这两个列表像这样相互连接:'ab' = 30, 'ca'=20 , 'gc' = 40, 'ab'=20, 'we'=10, 'ca'=-10
从这两个列表中,如果有相同的元素,我想得到每个元素的总和。最后,我将得到一个具有最大意义的元素。 我希望得到如下所示的简单结果:
'ab' has the biggest point: 50
你能帮我一个忙吗?
请您参考如下方法:
您可以使用 collections.Counter()实例:
>>> from collections import Counter
>>> code_list= ['ab','ca','gc','ab','we','ca']
>>> points = [30, 20, 40, 20, 10, -10]
>>> c = Counter()
>>> for key, val in zip(code_list, points):
... c[key] += val
...
>>> c.most_common(1)
[('ab', 50)]
zip() 将您的两个输入列表配对。
正是最后一次调用使 Counter() 在这里有用,.most_common() 调用在内部使用 max() 仅用于一项,但对于大于 1 的参数,使用 heapq.nlargest(),并且没有参数或要求 len(c),sorted() 被使用。
