【问题标题】:I can't print info from a nested dictionary我无法打印嵌套字典中的信息
【发布时间】:2021-04-15 19:22:15
【问题描述】:

所以我有一个非常大的嵌套字典列表,但我将只使用其中的一小部分信息,例如。

所以我正在尝试打印这个嵌套字典:

MN = {}
count_ = 1
menu_category = "DESSERT"
mi_item = 'Cake'
mi_price = '$5.00'
mi_description = 'Eggs, Sugar'
MN[count_] = {menu_category:{mi_item:{'price':mi_price, 'description':mi_description}}}

MC = ''
for mi_id, mi_cat, mi_it in MN.items():
    for mc in mi_cat:
        if mc != MC:
            print(f'Menu Category: {mc}')
            print()
        else:
            MC = mc
            print(f"{mc[mi_it]}: ", end='')
            for m_it in mi_it:
                print(f"{m_it}: {mi_it[m_it]}", end='\n')
            print()

但我收到此错误:

Traceback (most recent call last):
  File "c:\Users\bilakos\Desktop\PYTHON_PROJECTS\test.py", line 9, in <module>
    for mi_id, mi_cat, mi_it in MN.items():
ValueError: not enough values to unpack (expected 3, got 2)

我在这里做错了什么?

【问题讨论】:

  • 你不能做for mi_id, mi_cat, mi_it in MN.items(): 因为.items 只返回(key, value) 形式的元组,所以只有两件事要解包
  • @CoryKramer 那么我该如何解压我想要的信息呢?
  • 我认为没有办法直接解压字典。
  • 你需要嵌套循环。

标签: python dictionary nested


【解决方案1】:

items() 仅迭代字典的顶层,而不是嵌套字典。所以你需要编写自己的嵌套循环。

MC = ''
for mi_id, mi_cat in MN.items():
    for mc, mi in mi_cat.items():
        if mc != MC:
            print(f'Menu Category: {mc}')
            print()
            MC = mc
        for item_name, item_details in mi.items():
            print(f'  Item: {item_name}')
            print(f'    Price: {item_details["price"]}')
            print(f'    Description: {item_details["description"]}')
            print()

打印项目详细信息的循环部分不应位于else:,因为您将跳过新类别的第一项。

此外,似乎MN 应该是一个列表而不是字典,因为顺序很重要(您希望同一类别中的所有项目放在一起)。或者你应该有另一个级别的分组。

【讨论】:

  • 收到此错误:文件“c:\Users\bilakos\Desktop\PYTHON_PROJECTS\test.py”,第 18 行 print(f' Price: {item_details['price']}') ^ SyntaxError : f-string: 不匹配 '['
  • 已修复。需要在f'里面使用"
  • 如果您将mi 更改为mi.items(),则可以正常工作。非常感谢巴尔玛。
猜你喜欢
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2019-05-13
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多