在下面的代码中,我试图过滤成本超过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行解压缩的值太多
答案 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)]