假设我有用户(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
。我究竟做错了什么?我应该使用元组以外的东西吗?是我的迭代不好吗?
显示确切的回溯会很有用。
错误只是 Anna 的订单实际上不是嵌套元组:它是一个简单的元组。您在末尾缺少逗号:
orders = (('John', (('apples', 3), ('oranges', 1))),
('Anna', (('oranges', 6),)))
# ^ here
请记住,构成元组的是逗号,而不是括号。
不过正如其他人所说,嵌套字典在这里更合适。
我是一名优秀的程序员,十分优秀!