esp*_*akk 3 python arrays algorithm performance list
我有一个包含一些对象的数组,并且有几个相似的对象.例如:水果= [苹果,橙子,苹果,香蕉,香蕉,橙子,苹果,苹果]
从这个数组中获取代表性最高的对象的最有效方法是什么?在这种情况下,它将是"苹果",但你会如何以有效的方式出去计算?
不要重新发明轮子.在Python 2.7+中,您可以使用Counter类:
import collections
fruit=['apple', 'orange', 'apple', 'banana', 'banana', 'orange', 'apple', 'apple']
c=collections.Counter(fruit)
print(c.most_common(1))
# [('apple', 4)]
Run Code Online (Sandbox Code Playgroud)
如果您使用的是旧版本的Python,则可以Counter 在此处下载.
虽然知道如何自己实现这样的事情是很好的,但是习惯使用Counter也是一个好主意,因为它是(或将成为)标准库的一部分.
如果对象是可清洗的,那么您可以使用dict来存储计数:
results = {}
for item in somelist:
if item not in results:
results[item] = 1
else
results[item] += 1
print max(results.iteritems(), key=operator.itemgetter(1))
Run Code Online (Sandbox Code Playgroud)