要找到最常見的,我知道我可以使用這樣的事情:獲取最不常見的元素陣列
most_common = collections.Counter(array).most_common(to_find)
不過,我似乎無法找到任何可比性,尋找最不常見的元素。
請問我可以得到有關如何操作的建議。
要找到最常見的,我知道我可以使用這樣的事情:獲取最不常見的元素陣列
most_common = collections.Counter(array).most_common(to_find)
不過,我似乎無法找到任何可比性,尋找最不常見的元素。
請問我可以得到有關如何操作的建議。
借款collections.Counter.most_common
源和反相酌情:
from operator import itemgetter
import heapq
import collections
def least_common_values(array, to_find=None):
counter = collections.Counter(array)
if to_find is None:
return sorted(counter.items(), key=itemgetter(1), reverse=False)
return heapq.nsmallest(to_find, counter.items(), key=itemgetter(1))
>>> data = [1,1,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4]
>>> least_common_values(data, 2)
[(1, 2), (2, 4)]
>>> least_common_values([1,1,2,3,3])
[(2, 1), (1, 2), (3, 2)]
>>>
most_common
沒有任何參數返回全部條目,從最常見到最少排序。
所以要找到最不常見的,從另一端開始看。
def least_common_values(array, to_find):
"""
>>> least_common_values([1,1,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4], 2)
[(1, 2), (2, 4)]
"""
counts = collections.Counter(array)
return list(reversed(counts.most_common()[-to_find:]))
非常好。謝謝。 – jimy 2011-01-20 03:21:05
什麼
least_common = collections.Counter(array).most_common()[-1]
您可以使用一鍵功能:
>>> data=[1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,4]
>>> min(data,key=lambda x: data.count(x))
1
>>> max(data,key=lambda x: data.count(x))
4
我想你需要這個:
least_common = collections.Counter(array).most_common()[:-to_find-1:-1]
我建議如下,
least_common = collections.Counter(array).most_common()[len(to_find)-10:len(to_find)]
基於這個答案最常見的元素:https://stackoverflow.com/a/1518632
下面是在列表中獲取最不常見的元素的一個班輪:
def least_common(lst):
return min(set(lst), key=lst.count)
啊我很好,我現在明白了。謝謝。 – jimy 2011-01-20 03:19:30