计算元组列表列表中某些值的出现次数

时间:2016-03-16 15:01:31

标签: python tuples

我有一个如下所示的列表:

fruit_list = [
    ['fruit1', ('banana',  '1234'), ('pear', '3456'), ('banana', '4578')],
    ['fruit2', ('apple',  '5474'), ('mango', '7854')],
    ['fruit3', ('Pineapple',  '4534'), ('apple', '5456'), ('apple', '4458')],
] 

如果该水果出现不止一次,我想知道的是该列表中的特定水果和特定列表。

fruit_list[0].count('banana') > 1这样的东西,但我不认为这会因为元组而起作用。

1 个答案:

答案 0 :(得分:3)

您可以将sum()函数与生成器表达式一起使用来计算匹配的元组:

sum(t[0] == 'banana' for t in fruit_list[0]) > 1

这是有效的,因为python booleans(FalseTrue)是intFalse == 0True =的子类= 1。总结这些给出了匹配的数量:

>>> fruit_list = [
...     ['fruit1', ('banana',  '1234'), ('pear', '3456'), ('banana', '4578')],
...     ['fruit2', ('apple',  '5474'), ('mango', '7854')],
...     ['fruit3', ('Pineapple',  '4534'), ('apple', '5456'), ('apple', '4458')],
... ]
>>> sum(t[0] == 'banana' for t in fruit_list[0])
2
>>> sum(t[0] == 'banana' for t in fruit_list[0]) > 1
True