Python:打印用户输入的共同字母
有没有更好的方法来写这段代码?虽然没有错误,但似乎它把我输入的所有字母都整理成了一个列表。
我想打印出字符串中出现的共同字母,即使它们出现了多次。
这是我现在的代码
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
,所以它不应该出现。
我希望无论用户输入多少个字母,都能正确显示重复的字母而不需要限制。
我现在完全卡住了,没办法解决这个问题。
2 个回答
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]
或者类似的东西。
8
from collections import Counter
[letter for letter,count in Counter("Thomas Jones").items() if count > 1]
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。