我正在嘗試使用 for 回圈遍歷嵌套字典以顯示某種語言的所有書籍。我希望它顯示標題、作者、型別和售出的副本。我在最后一行收到以下錯誤:
too many values to unpack (expected 2)
在包含以下內容的行上引發錯誤:
for key,val in dictByLang[askedLanguage]:
這是字典和其余代碼。
books = {'A Tale of Two Cities': {'auth': 'Charles Dickens', 'Lang': 'English', 'Type': 'Historical Fiction', 'sold': '200000000'}, 'Don Quixote': {'auth': 'Miguel de Cervantes', 'Lang': 'Spanish', 'Type': 'Satire', 'sold': '500000000'}, 'The Lord of the Rings': {'auth': 'J. R. R. Tolkien', 'Lang': 'English', 'Type': 'Fantasy', 'sold': '150000000'}, 'The Alchemist': {'auth': 'Paul Coelho', 'Lang': 'Portuguese', 'Type': 'Fantasy', 'sold': '150000000'}, 'The Little Prince': {'auth': 'Antoine de Saint-Exupery', 'Lang': 'French', 'Type': 'Fantasy', 'sold': '140000000'}}
dictByLang = {}
for key, val in books.items():
if val["Lang"] not in dictByLang:
dictByLang[val["Lang"]] = {}
dictByLang[val["Lang"]].update({key:val})
askedLanguage = input("What language? ")
if askedLanguage not in dictByLang:
print("Not a valid language")
else:
for key,val in dictByLang[askedLanguage]:
print(key, val['auth'], val['type'],val['sold'])
我該如何解決這個問題?
uj5u.com熱心網友回復:
您的代碼有兩個問題:
- 您需要遍歷
dictByLang[askedLanguage].items(),而不僅僅是dictByLang[askedLanguage](僅遍歷鍵)。 - 回圈中的
'type'鍵for需要有一個大寫 T。
因此,for回圈應如下所示:
for key, val in dictByLang[askedLanguage].items():
print(key, val['auth'], val['Type'], val['sold'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/469268.html
上一篇:根據公共鍵合并字典串列
