说我有一个像
这样的清单>>> l = [-10,-10,-10,-20,-10,-10]
鉴于你不知道它是-20,我想在一行或两行中找到-20
的位置和数量。有什么想法吗?
答案 0 :(得分:4)
这将找到最不常见的元素:
>>> my_list = [-10,-10,-10,-20,-10,-10]
>>> from collections import Counter
>>> counter = Counter(my_list)
>>> min(counter, key=counter.get)
-20
要查找位置,您可以使用my_list.index(min(counter, key=counter.get))
。
请注意,这不适用于[1, 2, 9999, 3, 4]
等列表中的奇数输出,您可能希望查看我的答案here以查找此类案例。
答案 1 :(得分:2)
假设您要查找仅出现一次的项目:
>>> from collections import Counter
>>> l = [-10,-10,-10,-20,-10,-10]
>>> [i for i, n in Counter(l).iteritems() if n == 1]
[-20]
答案 2 :(得分:1)
print min(l,key=l.count)
但它可能不那么快
from collections import Counter
from operator import itemgetter
print min(Counter(l).items(), key = itemgetter(1))[0]
可能会更快
from itertools import takewhile
print l[len(list(takewhile(lambda x:l.count(x) != 1,l)))]
可能是最有效的方法......好吧我不知道Counter也应该很快
答案 3 :(得分:0)
如果您使用的是早于2.7的Python版本,则尚未安装Counter。如果是这种情况,那么答案可以在Get the key corresponding to the minimum value within a dictionary
找到mydict = dict((elem, my_list.count(elem)) for elem in my_list)
mymin = min(mydict, key=mydict.get)
print mydict
print mymin
输出:
{-20:1, -10:5}
-20