因此,嘗試創建一個接受字串輸入的函式,并使用該輸入將所有字符的所有實體計數到字典中(例如{'a':5, 'b':4 etc..},然后最終創建一個新字典,該字典由 3 個鍵組成:元音、輔音和其他,并將字符元組添加到正確的鍵中。
例如:輸入'brown fox'。回傳值應該是:{'Vowels':{('o', 2)}, 'Consonants':{('b', 1), ('r', 1), ('w', 1), ('n', 1), ('f', 1), ('x', 1)}, 'Other':{' ', 1}}。
目前我認為通過密鑰的迭代看起來很簡單,但跑到了死胡同。
我的想法是我使用我的函式 symbol_freq 將所有唯一字符排序到字典中,字符是鍵,值是計數。然后我將創建一個空字典,并開始遍歷那里的所有鍵,查看它們是否在元音和輔音串列中,并使用 3 個鍵將所述字符的元組分配給我的新字典中的正確鍵。
得到以下錯誤:
回溯(最近一次通話):檔案“....py”,第 26 行,列印中(group(“tao pihku ajuh?lvik”))
檔案“....py”,第 13 行,在 key 組中,symbol_freq_dict 中的值:ValueError:沒有足夠的值來解包(預期為 2,得到 1)
def symbol_freq(string):
symbol_freq_dict = dict.fromkeys(string, 0)
for i in string:
symbol_freq_dict[i] = 1
return symbol_freq_dict
def group(string):
vowels = ['a', 'e', 'i', 'o', 'u', '?', '?', '?', 'ü']
consonants = ['b', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', '?', 'z', '?', 't', 'v']
string.lower()
symbol_freq_dict = symbol_freq(string)
grouped_dict = dict()
for key, value in symbol_freq_dict:
if key in vowels:
grouped_dict['Vowels'].append((key, value))
if key in consonants:
grouped_dict['Consonants'].append((key, value))
else:
grouped_dict['Other'].append((key, value))
return grouped_dict
uj5u.com熱心網友回復:
閱讀有關 Python 字典的更多資訊。簡而言之:
- 默認情況下,它們只會迭代鍵
- 他們沒有 append 方法。(不,因為,你應該如何在字典的末尾添加一些東西?)
我改變了你的代碼如下:
def group(string):
vowels = ['a', 'e', 'i', 'o', 'u', '?', '?', '?', 'ü']
consonants = ['b', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', '?', 'z', '?', 't', 'v']
string.lower()
symbol_freq_dict = symbol_freq(string)
grouped_dict = {'Vowels': {},'Consonants': {},'Other':{}} # intialized dictionaries
for key, value in symbol_freq_dict.items(): # added items()
if key in vowels:
grouped_dict['Vowels'][key] = value # changed the append
elif key in consonants:
grouped_dict['Consonants'][key] = value # changed the append
else:
grouped_dict['Other'][key] = value # changed the append
return grouped_dict
uj5u.com熱心網友回復:
首先,請閱讀(并發布)完整的錯誤訊息,尤其是關于錯誤所在行的部分。
我猜這是第二個 for 回圈。解包意味著,您有一個元組并將其一次分配給兩個變數:
a,b = (1,2) #-> a=1, b=2
你在 for 回圈中這樣做。
For 獲取字典中的每個鍵并將其分配給左側的變數。所以如果你寫
for key, value ...
它試圖將 dict 的每個鍵分配給兩個變數,但這是行不通的,因為它只是一個錯誤。
因此,要解決此問題,請使用symbol_freq_dict.enumerate()which 基本上回傳包含鍵和值的元組串列。
順便說一句,下次谷歌你的錯誤資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/347787.html
上一篇:如何顯示地圖的k最少和最多元素?
