Python-第10行的值太多,无法解压缩

Python-第10行的值太多,无法解压缩,python,list,filter,tuples,Python,List,Filter,Tuples,在下面的代码中,我试图过滤价格超过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(pre

在下面的代码中,我试图过滤价格超过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:第10行的值太多,无法解包


选项1:只需在不使用
过滤器的情况下调用该方法

>>> preferred(fruits)
# [('orange', 1.25), ('pear', 1.49)]
选项2:以某种方式使用可调用的

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:重写
首选
函数以返回单个水果的
/


您正在混合
filter
和list comprehension(在本例中,两者的作用相同),您需要执行
favorites=preferred(fruits)
或使
preferred
根据单个水果的条件仅返回True或False。@cricket\u 007 filter将callable作为第一个参数,OP正在传递可调用的
preferred
作为第一个参数。
filter
不需要使用lambda,
preferred
可以在OP代码中轻松修改,以返回列表中每个水果的比较值,而不是所有水果的比较值。非常感谢。“我在混合两种不同的动物。”“蟋蟀”007。对不起,板球。我是新来的。谢谢你的帮助
def preferred(fruit):
    return fruit[1] > 1

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