我正在嘗試撰寫一個回圈,該回圈將遍歷由四個字母組成的單詞串列,取單詞的最后兩個字母,然后根據最后兩個字母將單詞分配給字典鍵。這是我到目前為止所得到的:
dictionary = {}
for z in four_letters: #For each element of the four_letters list
last_letters = getLastLetters(z) #Get the last to letters from the word
if last_letters not in dictionary.keys(): #If the last two letters have not already been made into a key in the dictionary...
dictionary[last_letters] = z #Create a key and add the word as a value
else: #If it has...
dictionary[last_letters].append(z) #Just add the word to the list of values
當我列印字典時,每個鍵只有一個值,我想知道是否有人可以解釋我做錯了什么并幫助我糾正它。提前致謝。
uj5u.com熱心網友回復:
問題出在這一行:
dictionary[last_letters] = z
本來應該是:
dictionary[last_letters] = [z]
但這是您應該考慮的更好(高性能和一些更清潔)的解決方案。
dictionary = {}
four_letters = [
"dfdf",
"df2f",
"d1df",
"d3df",
"d4df",
"d5df",
"d6df",
"df6f",
"df4f",
]
def getLastLetters(word):
return word[2:]
for word in four_letters: #For each element of the four_letters list
last_letters = getLastLetters(word) #Get the last to letters from the word
try:
dictionary[last_letters].append(word)
except KeyError:
dictionary[last_letters] = [word]
print(dictionary)
示例輸出:
{'df': ['dfdf', 'd1df', 'd3df', 'd4df', 'd5df', 'd6df'], '2f': ['df2f'], '6f': ['df6f'], '4f': ['df4f']}
uj5u.com熱心網友回復:
您可以使用dict.setdefault(key, value)以下命令為每個鍵設定默認值:
def get_last_two_letters(word: str):
return word[len(word) - 2:]
def build_word_dict(four_letters: [str]):
word_dict = {}
for z in four_letters:
last_two_letters = get_last_two_letters(z)
word_dict.setdefault(last_two_letters, []).append(z)
return word_dict
def test_build_word_dict():
four_letters: [str] = ["hell", "bold", "disc", "clap", "ball"]
word_dict = build_word_dict(four_letters)
assert word_dict == {
"ll": [
"hell",
"ball"
],
"ld": [
"bold"
],
"sc": [
"disc"
],
"ap": [
"clap"
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/366689.html
