【发布时间】:2017-01-04 17:12:17
【问题描述】:
我想获取字符串出现次数最多的第一个字母。
例如:
"google" -> g
"azerty" -> a
"bbbaaa" -> b
我已经有一个工作代码,使用OrdererDict() 来避免自动键重新排列:
from collections import OrderedDict
sentence = "google"
d = OrderedDict()
for letter in sentence:
if letter not in d.keys():
d[letter] = sentence.count(letter)
print(max(d, key=d.get)) # g
但我正在寻找一种可能的单行或更优雅的解决方案(如果可能的话)。
注意: 我已经尝试使用Counter(),但它不起作用,因为 python 中的 dict 不记得插入键的顺序。
例如
from collections import Counter
sentence = "bbbaaa"
c = Counter(sentence)
print(c.most_common()[0][0]) # have 50% chances of printing 'a' rather than 'b'.
额外问题:有人能解释一下为什么 OrderedDict() 不是 python 中的默认字典行为吗?
【问题讨论】:
-
OrderedDict() 比 dict 慢。
-
为什么需要 OrderedDict?如果您想确保键不会被覆盖,请使用the setdefault method or a DefaultDict,对于“单线”,您可以将循环简化为理解
-
goooogle和aaabbbb想要的结果是什么? -
@MaxChrétien 是由单词中第一个出现的那个或词典中第一个出现的那个打破的平局。
标签: python string python-3.x dictionary