编写此代码是否有更好的方法。虽然没有错误,但它似乎打印了我输入的所有字母排序到列表中。
我想在字符串中打印常用字母,即使不止一个。
以下是我的内容
mystr = input("Enter a string:")
s = list(mystr)
letter_counter = {}
for word in mystr:
if word in letter_counter:
letter_counter[word] += 1
else:
letter_counter[word] = 1
user_letter = sorted(letter_counter, key = letter_counter.get, reverse = True)
number_1 = user_letter[:2]
print(number_1)
我可以打印正确字母的唯一方法是设置
的限制 number_1 = user_letter[:2]
例如,如果我输入以下内容:
mystr = input("Thomas Jones")
在代码中打印出来 输出将是
print(number_1)
[o], [s]
哪个是正确的但是如果限制设置为2
到3
number_1 = user_letter[:3]
它将打印[o] [s] [a]
只有一个a
它不应该存在。
我想要它,以便用户输入的任何数量的单词将显示正确的重复字母没有限制器。
我是自由派,我不知道如何纠正这个
答案 0 :(得分:8)
from collections import Counter
[letter for letter,count in Counter("Thomas Jones").items() if count > 1]
答案 1 :(得分:2)
您的代码生成
letter_counter = {'a': 1, ' ': 1, 'e': 1, 'h': 1, 'J': 1, 'm': 1, 'o': 2, 'n': 1, 's': 2, 'T': 1}
user_letter = ['o', 's', 'a', ' ', 'e', 'h', 'J', 'm', 'n', 'T']
这都是正确的。
如果您只想要重复的字母,请尝试
user_letter = [letter for letter in letter_counter if letter_counter[letter] > 1]
或类似的东西。