你有一个嵌套列表,你可以用它来压平itertools.chain.from_iterable https://docs.python.org/3.7/library/itertools.html#itertools.chain.from_iterable.
除了这个复杂性之外,问题还可以归结为一个简单的应用collections.Counter https://docs.python.org/3.7/library/collections.html#collections.Counter因为一个Counter
计算元组没有问题。
>>> from collections import Counter
>>> from itertools import chain
>>>
>>> bi_grams= [[('ABC', 'Memorial'), ('Memorial', 'Hospital')], [('ABC', 'Memorial'), ('Memorial', 'Clinic')]]
>>> Counter(chain.from_iterable(bi_grams))
>>>
Counter({('ABC', 'Memorial'): 2,
('Memorial', 'Clinic'): 1,
('Memorial', 'Hospital'): 1})
还有一个非常直接的解决方案for
loop:
>>> c = Counter()
>>> for x in bi_grams:
...: c.update(x)
...:
>>> c
>>>
Counter({('ABC', 'Memorial'): 2,
('Memorial', 'Clinic'): 1,
('Memorial', 'Hospital'): 1})