假设我有一些用户(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在这里更合适。