我有元组的这个 元组
:
TupleOfTuples = (('Venue1', 'Name1'), ('Venue1', 'Name2'),
('Venue2', 'Name3'), ('Venue3', 'Name4'),
('Venue3', 'Name5'), ('Venue3', 'Name6'))
我想将它转换成这样的结果:
Output = (('Venue1', 2), ('Venue2', 1), ('Venue3', 3))
在这种情况下,Output
包含('Venue1', 2)
,例如,其中2
是的次数>'Venue1'
出现在 TupleOfTuples
中。
我尝试使用 len()
来计算出现的次数,但它不起作用,因为 TupleOfTuples
不是单个元组而是元组的元组。
在Python2.7中如何做到这一点?
最佳答案
使用collections.Counter()
计算你有多少次出现:
from collections import Counter
Output = Counter(t[0] for t in TupleOfTuples).items()
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)]
关于python - 如何将这个元组的元组转换为其元素的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24347482/