2017-11-07 10 views
1

2文字列(myStringとcharString)を入力として取得し、charStringの文字が何文字あるかを調べる関数を作成しようとしています。 myStringでこれらの値をリストに追加します。たとえば、 "t = 4"、 "q = 1"、 "e = 4"]を返す必要があります(「すべてが西側の静かです」、「tqe」)。あなたは間違いなくstr.countを使用する必要があります2つの文字列を比較し、文字とその文字の文字数を含むリストを文字列に作成

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 

答えて

2

、また、あなたがリストに正しい方法を追加していない:ここでは、私が持っているものです。総数が必要なので、反復ごとにそれを追加することは逆効果です。ここで

は正しいバージョンです:両方のパラメータをキャストすることはあなたのために重要でない場合、これは1行で行うことができることを

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 ] 
0

これは機能しますか?

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)) 

が、それはちょうど彼らが持つ

の発生頻度をカウントするカウンタを使用して、その後Bにあった文字のみを維持し、リストにあなたの入力分割=すべては 西部戦線に静かですおよびb = QTE

出力は:{ 'Q':1、 'E':4 'T':4} @ Xander25によって示唆されるよう

0

、使用できる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が返されます。

関連する問題