首页 > 解决方案 > 如何计算python中列表所有元素的出现次数?

问题描述

我必须分别写出所有元素以及它们的数量。 这是我制作的程序。它计数正确但没有提供所需的输出

输出是这样的 我希望输出是这样的。显示个人完整计数的所有数字

标签: python-3.xlist

解决方案


您可以使用以下方法计算特殊元素的出现次数count()

grades = ['b', 'b', 'f', 'c', 'b', 'a', 'a', 'd', 'c', 'd', 'a', 'a', 'b']
letters = ['a', 'b', 'c', 'd', 'f']

print(list(map(lambda letter: {letter: grades.count(letter)}, letters)))

输出:

[{'a': 4}, {'b': 4}, {'c': 2}, {'d': 2}, {'f': 1}]

如果您想在不使用letters. 你可以这样做:

grades = ['b', 'b', 'f', 'c', 'b', 'a', 'a', 'd', 'c', 'd', 'a', 'a', 'b']

print(list(map(lambda letter: {letter: grades.count(letter)}, set(grades))))

输出:

[{'f': 1}, {'b': 4}, {'c': 2}, {'d': 2}, {'a': 4}]

对于您的预期输出:

grades = ['b', 'b', 'f', 'c', 'b', 'a', 'a', 'd', 'c', 'd', 'a', 'a', 'b']

occurrence = map(lambda letter: (letter, grades.count(letter)), set(grades))

for item in occurrence:
    print(f"{item[0]}={item[1]}")

输出:

c=2
b=4
d=2
f=1
a=4

更新

您可以使用defaultdict()来计算每个元素的出现次数:

from collections import defaultdict

grades = ['b', 'b', 'f', 'c', 'b', 'a', 'a', 'd', 'c', 'd', 'a', 'a', 'b']
occurrence = defaultdict(lambda: 0)

for character in grades:
    occurrence[character] += 1

for key, value in occurrence.items():
    print(f"{key}={value}")

输出:

b=4
f=1
c=2
a=4
d=2

推荐阅读