python大数据搜索_Python:搜索最大数据

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值