Python:搜索最大数据 [英] Python: searching maximum data

查看:179
本文介绍了Python:搜索最大数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有两个列表.一个是code_list,另一个是点数

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().

There are two lists. one is code_list, the other is points

code_list= ['ab','ca','gc','ab','we','ca']
points = [30, 20, 40, 20, 10, -10]

These two lists connect each other like this: 'ab' = 30, 'ca'=20 , 'gc' = 40, 'ab'=20, 'we'=10, 'ca'=-10

From these two lists, If there are same elements, I wan to get sum of each element. Finally, I'll get a element which has the biggest point. I'll hope to get a simple result like below:

'ab' has the biggest point: 50

Could you give me a your help?

解决方案

You can use a collections.Counter() instance:

>>> 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() pairs up your two input lists.

It's that last call that makes the Counter() useful here, the .most_common() call uses max() internally for just one item, but for an argument greater than 1 heapq.nlargest() is used, and with no argument or asking for len(c), sorted() is used.

这篇关于Python:搜索最大数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆