Python—如何计算列表中出现的次数
对于这样的列表:Python—如何计算列表中出现的次数,python,list,python-3.x,count,Python,List,Python 3.x,Count,对于这样的列表: spam=[['a',1],['b',2],['c',3],['a',2],['b',2],['c',2],['a',3],['b',3],['c',3]] 需要计算a、b和c的出现次数。查看该类。尽管它不是对值求和,但要小心,您可以使用和生成器表达式- Counter(a for a,_ in spam) 演示- >>> from collections import Counter >>> spam=[['a',1],['b',2],
spam=[['a',1],['b',2],['c',3],['a',2],['b',2],['c',2],['a',3],['b',3],['c',3]]
需要计算a、b和c的出现次数。查看该类。尽管它不是对值求和,但要小心,您可以使用和生成器表达式-
Counter(a for a,_ in spam)
演示-
>>> from collections import Counter
>>> spam=[['a',1],['b',2],['c',3],['a',2],['b',2],['c',2],['a',3],['b',3],['c',3]]
>>> Counter(a for a,_ in spam)
Counter({'a': 3, 'b': 3, 'c': 3})
您可以使用字典:
c={}
for i in spam: c[i[0]] = c[i[0]]+1 if i[0] in c else 1
将列表转换为字典
spam=[['a',1],['b',2],['c',3],['a',2],['b',2],['c',2],['a',3],['b',3],['c',3]]
dict(spam)
输出:{'a':3,'b':3,'c':3}回答得很好,但将来我更愿意看到那些先发布他们尝试过的代码的人。这可以简化一点:
计数器(垃圾邮件中的a[0])
@VPfB是的,在这种情况下正确的生成器表达式可能更好。我在答复中更新了这一点。