我正在尝试创建一个函数,该函数将 2 个字符串(myString 和 charString)作为输入,并查看 charString 中的字母在 myString 中的次数。然后将这些值追加到列表中。例如("西线一切都很安静","tqe")应该返回["t=4","q=1","e=4"]。这是我所拥有的:
def myProblem(myString, charString):
myString = str(myString)
charString = str(charString)
count = 0
newList = []
for letter in charString:
if letter in myString:
count += 1
newList.append(str(letter)+"="+str(count))
else:
pass
return newList
你绝对应该使用 str.count
,而且你没有以正确的方式附加列表。由于您想要总数,因此在每次迭代时附加它会产生适得其反的效果。
这是一个正确的版本:
def myProblem(myString, charString):
myString = str(myString)
charString = str(charString)
newList = []
for letter in charString:
newList.append(letter +"="+str(myString.count(letter)))
return newList
print(myProblem('all is quiet on the western front', 'tqe'))
输出
['t=4', 'q=1', 'e=4']
请注意,如果强制转换两个参数对您来说并不重要,则可以在一行中完成此操作:
def myProblem(myString, charString):
return [letter +"="+str(myString.count(letter)) for letter in charString ]
这行得通吗?
from collections import Counter
def myProblem(myString, charString):
myString = str(myString)
charString = str(charString)
newList = []
for letter in myString:
if letter in charString:
newList.append(str(letter))
else:
pass
newList = dict(Counter(list(newList)))
return newList
a = input("enter the phrase: ")
b = input("enter the letters to look for: ")
print(myProblem(a, b))
它只是将您的输入 A 拆分为一个列表,只保留 B 中的字母,然后使用计数器来计算它们出现的频率
与 a = 西线一切都很安静和 b = QTE
输出为: {'Q': 1, 'E': 4, 't': 4}
> 按照@Xander25的建议,您可以使用集合。计数器
from collections import Counter
input_string = "all is quiet on the western front"
char_string = "tqe"
letter_counts = Counter(input_string) # Create a counter object
# output - Counter({' ': 6, 'a': 1, 'e': 4, 'f': 1, 'h': 1, 'i': 2, 'l': 2, 'n': 3, 'o': 2, 'q': 1, 'r': 2, 's': 2, 't': 4, 'u': 1, 'w': 1})
output_counts = {letter: letter_counts[letter] for letter in char_string} # Create dictionary containing counts of letters present in char_string
# output_counts - {'e': 4, 'q': 1, 't': 4}
output_list = [letter + "=" + str(letter_counts[letter]) for letter in char_string]
# output_list - ['t=4', 'q=1', 'e=4']
此外,当您使用集合时。计数器,它不会为字典中不存在的任何键抛出key error
,而是给出值0
。