2016-07-24 202 views
-1

幫助轉換python代碼結果,其中發現元音字符串出現在字典中的時間數?將python轉換成字典

count = 0 
s = "apple" 
vowels = ['a' , 'e' , 'i' ,'o' , 'u'] 
    for char in s: 
    if char in vowels: 
    count += 1 
    print ('Number of vowels: ' + str(count)) 

結果應該是: 蘋果:{ 'A':1, 'E':1}

+1

你想要什麼詞典?從元音到它出現的次數? – Mureinik

回答

0

像這樣的簡單的變化會做的:不是遞增count += 1,直接增加在詞典:

count = 0 
s = "apple" 
vowels = ['a' , 'e' , 'i' ,'o' , 'u'] 
vowels_dict = {} 
for char in s: 
    if char in vowels: 
     if char in vowels_dict: 
      vowels_dict[char] +=1 
     else: 
      vowels_dict[char] = 1 

print (vowels_dict) 
+0

你的縮進是關閉的,原來在'vowels_dict'裏面什麼也沒有,所以你如何添加任何東西到一個不存在的鍵? –

+0

@PythonMaster:注意'else'有'vowels_dict [char] = 1'。 'else'中的冒號被遺漏了,但是代碼的邏輯是正確的。我現在修復了它。 – zondo

+0

現在它變得更有意義,對此感到抱歉! –

0

首先,讓我們vowels到字典中。我們需要的第二個舉行對我們做的第一循環的比賽:

s = "apples" 
vowels = dict.fromkeys('aeiou', 0) 
matches = {} 

我們需要稍微修改for循環遞增值對應關鍵(元音):

for char in s: 
    if char in vowels: 
     vowels[char] += 1 

for循環上述檢查是否char是元音(或者簡單地說,是)在vowels發現的關鍵之一。如果是,則我們將相應鍵的值增加1.例如,如果char爲「a」,則if語句將返回True,並且鍵(「a」)的值(冒號後的整數)將增加一。現在,我們需要的是把它的值是在0所有鍵進入matches詞典:

for vowel in vowels: 
    if vowels[vowel] < 1: # The vowel didn't appear in the word 
     continue 
    else: 
     matches[str(vowel)] = vowels[vowel] 

,最後一行創建了matches字典(該matches[str(vowel)]部分)一個新的密鑰,然後分配新的價值鍵等於vowels字典(= vowels[vowel]部分)中相應鍵的值。現在我們需要做的就是打印出來的matches詞典:

print matches 

全碼:

count = 0 
s = "apple" 
vowels = dict.fromkeys('aeiou', 0) 
matches = {} 
for char in s: 
    if char in vowels: 
     vowels[char] += 1 
for vowel in vowels: 
    if vowels[vowel] < 1: 
     continue 
    else: 
     matches[str(vowel)] = vowels[vowel] 

print matches 
+0

你的元音詞典可以通過'dict.fromkeys('aeiou',0)'' – zondo

+0

更簡單地實例化。這是行得通的,節省了時間打字,謝謝! –