Python元组操作和计数

Raj*_*eev 4 python string tuples

我有以下元组.我想构建一个输出如输出中所述输出的字符串.我想要计算对应于'a'的所有元素,即有多少k1出现了'a'等等.什么是最简单的方法做这个

a=[('a','k1'),('b','k2'),('a','k2'),('a','k1'),('b','k2'),('a','k1'),('b','k2'),('c','k3'),('c','k4')]
Run Code Online (Sandbox Code Playgroud)

输出应该在字符串输出=""

 a k1  3
 a k2  1
 b k1  1
 b k2  3
 c k3  1
 c k4  1
Run Code Online (Sandbox Code Playgroud)

Sim*_*ser 6

使用以下Counter课程collections:

>>> a = [('a', 'k1'), ('b', 'k2'), ('a', 'k2'), ('a', 'k1'), ('b', 'k2'), ('a', 'k1'), ('b', 'k2'), ('c', 'k3'), ('c', 'k4')]
>>> from collections import Counter
>>> c = Counter(a)
Counter({('b', 'k2'): 3, ('a', 'k1'): 3, ('a', 'k2'): 1, ('c', 'k3'): 1, ('c', 'k4'): 1})
Run Code Online (Sandbox Code Playgroud)

您可以使用c.items()迭代计数:

>>> for item in c.items():
...     print(item)
... 
(('a', 'k2'), 1)
(('c', 'k3'), 1)
(('b', 'k2'), 3)
(('a', 'k1'), 3)
(('c', 'k4'), 1)
Run Code Online (Sandbox Code Playgroud)

上面的代码是Python 3. Counter该类是Python 2.7中的新增功能.您现在可以按所需顺序重新排列项目,并在需要时将它们转换为字符串.