计算包含特定元素的子列表并在python中输出计数

时间:2015-02-14 21:17:37

标签: python list count

我正在寻找一个输出包含特定元素的子列表计数的函数。

>>res = count_doc_frequencies([['a', 'b', 'a'], ['a', 'b', 'c'], ['a']])
>>res['a']
3
>>res['b']
2

在我们的案例中,' a'发生在所有三个子列表中,因此输出为3,而' b'碰巧只发生在子列表1和子列表2中,因此输出为2

有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

如果嵌套总是一层深,那么使用list.count()方法将是最快的:

lst = [['a', 'b', 'a'], ['a', 'b', 'c'], ['a']]
print sum(sublst.count('a') for sublst in lst)

如果你想计算包含元素的子列表的数量,那么:

print sum('a' in sublst for sublst in lst)

(这利用了Boolint的子类)的事实。

答案 1 :(得分:0)

假设你真的想要一个项目的出现的数量,可能是这样的:

>>> import itertools
>>> l = [['a', 'b', 'a'], ['a', 'b', 'c'], ['a']]
>>> sum(1 for i in itertools.chain(*l) if i == 'a')
4

如果您只需要包含该项目的子列表的数量:

>>> sum(1 for i in l if 'a' in l)
3

答案 2 :(得分:0)

String[] splittedField = field.split(", ");
for (String substring : splittedField) {
    String[] parts = substring.split("=");
    otherMethod(parts[0], parts[1]);
}