[英]Comparing two strings and creating a list containing the letter and the count of that letter in the string
我正在嘗試創建一個將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的建議,您可以使用collections.Counter
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']
同樣,當您使用collections.Counter時,它不會為字典中不存在的任何鍵引發key error
,而是給出值0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.