Python - 在第10行解压缩的值太多了

时间:2016-06-06 14:58:47

标签: 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(preferred, fruits)
print favorites

我收到错误说:

  

ValueError:在第10行解压缩的值太多

1 个答案:

答案 0 :(得分:0)

选项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)]