給定一個名為 mystrings 的小寫字串串列,創建并回傳一個字典,其鍵是字串的唯一第一個字符,其值是以這些字符開頭的單詞串列,其順序與它們在字串串列中出現的順序相同。忽略大小寫:您可以假設所有單詞都是小寫的。下面給出了一個字串示例串列,但是您的代碼應該適用于任何長度的字串串列。您不必撰寫函式。
mystrings = [“香蕉”、“木琴”、“鴨子”、“馬車”、“頭巾”、“鉆石”、“紅衣主教”]
輸出是 {'b': ['banana', 'bandana'], 'x': ['xylophone'], 'd': ['duck', 'diamond'],
'c': ['馬車', '紅衣主教']}
我嘗試過使用回圈,但被卡住了。
uj5u.com熱心網友回復:
使用回圈和字典setdefault:
mystrings = ["banana", "xylophone", "duck", "carriage", "bandana", "diamond", "cardinal"]
out = {}
for word in mystrings:
out.setdefault(word[0], []).append(word)
輸出:
{'b': ['banana', 'bandana'],
'x': ['xylophone'],
'd': ['duck', 'diamond'],
'c': ['carriage', 'cardinal']}
uj5u.com熱心網友回復:
單線回圈:
mystrings_dict = {k: [w for w in mystrings_list if w[0] == k] for k in set([w[0] for w in mystrings_list])}
傳統回圈:
mystrings_list = ["banana", "xylophone", "duck", "carriage", "bandana", "diamond", "cardinal"]
mystrings_dict = dict()
for word in mystrings_list:
firstletter = word[0] # 0th element of string is first letter
if firstletter in mystrings_dict:
mystrings_dict[firstletter].append(word)
else:
mystrings_dict[firstletter] = [word]
結果:
print(mystrings_dict)
>> {'b': ['banana', 'bandana'], 'x': ['xylophone'], 'd': ['duck', 'diamond'], 'c': ['carriage', 'cardinal']}
uj5u.com熱心網友回復:
您將查找 中的每個單詞words,如果一個單詞的第一個字母不在解決方案字典中,您將創建一個與該字母關聯的串列,如果沒有,這意味著該字母(在字典中)中存在一個串列,其中 at至少一個單詞,然后將新單詞添加到該串列中。
words = ["banana", "xylophone", "duck", "carriage", "bandana", "diamond", "cardinal"]
sol={}
for w in words:
if w[0] not in sol:
sol[w[0]] = []
sol[w[0]].append(w)
print(sol)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/519823.html
標籤:Python循环字典
