[英]How to find the most common string(s) in a Python list?
我正在处理古代DNA数据。 我有一个给定坐标的n个不同碱基对的数组。
例如,['A','A','C','C','G']
我需要在脚本中进行一些设置,从而确定最频繁的呼叫。 如果有一个,应该使用那个。 如果有两个(或三个)并列(例如,此处为A和C),我需要它随机选择两者中的一个。
我一直在寻找解决方案,但找不到满意的解决方案。 我看到的最常见的解决方案是Counter,但是Counter对我来说毫无用处,因为c.most_common(1)不会标识1和2是绑定的。
您可以先从Counter
使用max
函数返回的映射中获取最大计数,然后使用列表推导仅输出计数等于最大计数的键。 由于Counter
, max
和list理解都花费线性时间,因此代码的总体时间复杂度可以保持为O(n) :
from collections import Counter
import random
lst = ['A','A','C','C','G']
counts = Counter(lst)
greatest = max(counts.values())
print(random.choice([item for item, count in counts.items() if count == greatest]))
这将输出A
或C
这样的事情会起作用:
import random
string = ['A','A','C','C','G']
dct = {}
for x in set(string):
dct[x] = string.count(x)
max_value = max(dct.values())
lst = []
for key, value in dct.items():
if value == max_value:
lst.append(key)
print(random.choice(lst))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.