如何将这个元组元组转换为元素数?

use*_*486 3 python tuples count python-2.7

我有这个tuple元组:

TupleOfTuples = (('Venue1', 'Name1'), ('Venue1', 'Name2'), 
                 ('Venue2', 'Name3'), ('Venue3', 'Name4'), 
                 ('Venue3', 'Name5'), ('Venue3', 'Name6'))
Run Code Online (Sandbox Code Playgroud)

我想将其转换为得到如下结果:

Output = (('Venue1', 2), ('Venue2', 1), ('Venue3', 3))
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Output包含('Venue1', 2),例如,在哪里发生2的次数.'Venue1'TupleOfTuples

我尝试len()用来计算出现次数,但是它不起作用,因为它TupleOfTuples不是单个元组而是元组的元组.

如何在Python2.7中完成?

Mar*_*ers 5

使用collections.Counter()来算你多少次有:

from collections import Counter

Output = Counter(t[0] for t in TupleOfTuples).items()
Run Code Online (Sandbox Code Playgroud)

A Counter()是一个字典,其中键被映射到计数; 通过传入生成器表达式,它将为您进行计数.因为它是一个字典子类,dict.items()所以可以用来生成一个(key, count)元组列表.

这确实产生了一个清单 ; tuple()如果你坚持在这里有一个元组,那就简单地说.

演示:

>>> from collections import Counter
>>> TupleOfTuples = ( ('Venue1', 'Name1'), ('Venue1', 'Name2'), ('Venue2', 'Name3'), ('Venue3', 'Name4'), ('Venue3', 'Name5'), ('Venue3', 'Name6') )
>>> Counter(t[0] for t in TupleOfTuples).items()
[('Venue1', 2), ('Venue3', 3), ('Venue2', 1)]
Run Code Online (Sandbox Code Playgroud)