Python第10行的值太多,无法解包

2024-04-27 01:08:18 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,我试图过滤价格超过1.00的水果。。你知道吗

fruits = [
   ( 'apple',  0.99 ),
   ( 'orange', 1.25 ),
   ( 'pear',   1.49 ),
   ( 'banana', 0.75 ),
]

def preferred(fruit):
    pfruit = [ (x, y) for (x, y) in fruit if y > 1 ]
    return pfruit

favorites = filter(preferred, fruits)
print favorites

我得到一个错误,说:

ValueError: too many values to unpack at line 10


Tags: 代码inapplefordef价格bananapear
1条回答
网友
1楼 · 发布于 2024-04-27 01:08:18

选项1:只需调用不带filter的方法

>>> preferred(fruits)
# [('orange', 1.25), ('pear', 1.49)]

选项2:以某种方式将filter与可调用

fruits = [
    ( 'apple',  0.99 ),
    ( 'orange', 1.25 ),
    ( 'pear',   1.49 ),
    ( 'banana', 0.75 ),
]

filter(lambda fruit: fruit[1] > 1.0, fruits)
# [('orange', 1.25), ('pear', 1.49)]

选项2.5:重写preferred函数,为单个水果返回True/False。你知道吗

def preferred(fruit):
    return fruit[1] > 1

filter(preferred, fruits)
# [('orange', 1.25), ('pear', 1.49)]

相关问题 更多 >