如何计算 Python 列表中的 "least occurring" 元素?
How to compute the "least occurring" elements in a Python list?
假设我有一个 python 列表:
foo = ['A', 'A', 'A', 'B', 'C', 'C']
我怎样才能提取列表中的 "least occurring" 元素?
查找多数元素更容易,执行以下操作:
print(max(foo, key=foo.count))
'A'
但是,我怎样才能有效地找到出现次数最少的呢?在上面的示例中,它是 'B'
.
就所有计数都相同的列表而言,例如['A', 'B', 'C', 'D']
,我觉得所有项目都是"least occurring"。
将 max
替换为 min
,它将完成您的工作。
试试这个:
foo = ['A', 'A', 'A', 'B', 'C', 'C']
print(min(foo, key=foo.count))
>>>'B'
如果您有多个元素的最小计数相同,您可以将 collections.Counter
与字典一起使用。
试试这个:
import collections
foo = ['A', 'B', 'C']
occurrences = collections.Counter(foo)
res = [key for key in occurrences if all(occurrences[temp] >= occurrences[key] for temp in occurrences)]
print(res)
>>>['A', 'B', 'c']
使用Counter
一次迭代获取所有计数:
from collections import Counter
foo = ['A', 'A', 'A', 'B', 'C', 'C']
c = Counter(foo)
m = min(c.values())
mins = [x for x in foo if c[x] == m]
假设我有一个 python 列表:
foo = ['A', 'A', 'A', 'B', 'C', 'C']
我怎样才能提取列表中的 "least occurring" 元素?
查找多数元素更容易,执行以下操作:
print(max(foo, key=foo.count))
'A'
但是,我怎样才能有效地找到出现次数最少的呢?在上面的示例中,它是 'B'
.
就所有计数都相同的列表而言,例如['A', 'B', 'C', 'D']
,我觉得所有项目都是"least occurring"。
将 max
替换为 min
,它将完成您的工作。
试试这个:
foo = ['A', 'A', 'A', 'B', 'C', 'C']
print(min(foo, key=foo.count))
>>>'B'
如果您有多个元素的最小计数相同,您可以将 collections.Counter
与字典一起使用。
试试这个:
import collections
foo = ['A', 'B', 'C']
occurrences = collections.Counter(foo)
res = [key for key in occurrences if all(occurrences[temp] >= occurrences[key] for temp in occurrences)]
print(res)
>>>['A', 'B', 'c']
使用Counter
一次迭代获取所有计数:
from collections import Counter
foo = ['A', 'A', 'A', 'B', 'C', 'C']
c = Counter(foo)
m = min(c.values())
mins = [x for x in foo if c[x] == m]