使用嵌套字典解包:for循环的值太多



我正在尝试使用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'])

如何解决这个问题?

你的代码有两个问题:

  1. 你需要迭代dictByLang[askedLanguage].items(),而不仅仅是dictByLang[askedLanguage](它只迭代键)。
  2. for循环中的'type'键需要有一个大写的t。

那么,for循环应该如下所示:

for key, val in dictByLang[askedLanguage].items():
print(key, val['auth'], val['Type'], val['sold'])

相关内容

  • 没有找到相关文章

最新更新