我想在字典中顯示具有所需字符的單詞。例如 :
Write a sentence: Mister Jack, you are a good coder
{'a': ['are', 'jack,'], 'b': [], 'c': ['coder', 'jack,'], 'd': ['coder'], 'e': ['coder', 'mister',], 'f': [], 'g': [], 'h': [], 'i': ['mister'], 'j': ['jack,'], 'k': ['jack,'], 'l': [], 'm': ['mister', ], 'n': [], 'o': ['coder', 'you', 'good'], 'p': [], 'q': [], 'r': ['coder', 'mister'], 's': ['mister', ], 't': ['mister'], 'u': ['you'], 'v': [], 'w': [], 'x': [], 'y': ['you'], 'z': []}
這是我的代碼:
import string
alphabet = string.ascii_lowercase
sentence= (input("Write your sentence: " )).lower()
letter_notfound=(sorted(list((set(string.ascii_lowercase) - set("".join(sentence.split()))))))
print (letter_notfound)
letter_list=list(alphabet)
unique_letter = (sorted(list((set(letter_list)-set(letter_notfound)))))
dico={}
for key in (letter_list):
for char in sentence:
if char in unique_letter:
dico[char] = [sentence]
for char in letter_notfound:
dico[char] = []
print(dict(sorted(dico.items())))
輸入: 杰克先生,你是個優秀的程式員
輸出:
{'a': ['mister jack, you are a good coder'], 'b': [], 'c': ['mister jack, you are a good coder'], 'd': ['mister jack, you are a good coder'], 'e': ['mister jack, you are a good coder'], 'f': [], 'g': ['mister jack, you are
a good coder'], 'h': [], 'i': ['mister jack, you are a good coder'], 'j': ['mister jack, you are a good coder'], 'k': ['mister jack, you are a good coder'], 'l': [], 'm': ['mister jack, you are a good coder'], 'n': [], 'o': ['mister jack, you are a good coder'], 'p': [], 'q': [], 'r': ['mister jack, you are a good coder'], 's': ['mister jack, you are a good coder'], 't': ['mister jack, you are a good coder'], 'u': ['mister jack, you are a good coder'], 'v': [], 'w': [], 'x': [], 'y': ['mister jack, you are a good coder'], 'z': []}
期望的輸出:
{'a': ['are', 'jack,'], 'b': [], 'c': ['coder', 'jack,'], 'd': ['coder'], 'e': ['coder', 'mister',], 'f': [], 'g': [], 'h': [], 'i': ['mister'], 'j': ['jack,'], 'k': ['jack,'], 'l': [], 'm': ['mister', ], 'n': [], 'o': ['coder', 'you', 'good'], 'p': [], 'q': [], 'r': ['coder', 'mister'], 's': ['mister', ], 't': ['mister'], 'u': ['you'], 'v': [], 'w': [], 'x': [], 'y': ['you'], 'z': []}
uj5u.com熱心網友回復:
使用串列/字典理解的更多“Pythonic” :
words = sentence.split(' ') # Assuming already lowercase
alphabet_dict = {x: [w for w in words if x in w] for x in ascii_lowercase}
理解不僅更簡潔,而且更具宣告性而不是命令性,因此在大多數情況下更容易理解,因為它更容易說明是什么而不是如何。
我推薦閱讀何時在 Python 中使用串列理解
uj5u.com熱心網友回復:
我建議的第一件事是遍歷單詞,因為只有它們對你很重要。你可以得到他們split
words = sentence.split()
第二件事是您無處可將新詞附加到現有密鑰。你應該從準備字典開始。
dico = {letter: [] for letter in alphabet}
現在應該很容易檢查字母是否在單詞中。
for letter im letter_list:
for word in words:
if letter in word:
dico[letter].append(word)
uj5u.com熱心網友回復:
這將創建一個帶有字母的字典,然后將輸入轉換為由單詞分隔的串列。然后我們遍歷這些字母并檢查它是否在字母字典中,如果是的話,我們會附加這個詞。
import string
alphabet = string.ascii_lowercase
alphabet_dict = {alphabet[i]: [] for i in range(len(alphabet))}
input_list = input("Enter a string: ").split(" ")
for word in input_list:
for letter in word:
if letter in alphabet_dict:
alphabet_dict[letter].append(word)
alphabet_dict = dict(sorted(alphabet_dict.items(), key=lambda item: item[0]))
print(alphabet_dict)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/526650.html
上一篇:在Lua中使用for回圈創建變數
下一篇:行加矩陣運算的向量化回圈
