假设我有一些用户(john,anna)可以根据自己的选择量订购水果(橙子,苹果)。
以下是我在python中所做的:

orders = (('John', (('apples', 3), ('oranges', 1))),
          ('Anna', (('oranges', 6))))

我想重复一下命令:
for user, order in orders:
    for fruit, quantity in order:
        print "%s wants %d %s" % (user, quantity, fruit)

这是我期望的输出:
John wants 3 apples
John wants 1 oranges
Anna wants 6 oranges

我得到一个ValueError: too many values to unpack我做错什么了?
我应该用元组以外的东西吗?是我的迭代不好吗?

最佳答案

显示确切的回溯是有用的。
错误很简单,安娜的顺序实际上不是一个嵌套元组:它是一个简单元组结尾处缺少逗号:

orders = (('John', (('apples', 3), ('oranges', 1))),
          ('Anna', (('oranges', 6),)))
#                                 ^ here

记住,是逗号组成元组,而不是括号。
正如其他人所说的,嵌套的dict在这里更合适。

10-05 18:29