Python:统计列表中重复元素数量

88 投票
5 回答
376748 浏览
提问于 2025-04-18 03:54

我刚开始学习Python,想找个简单的方法来计算一个列表中重复元素的数量,比如:

MyList = ["a", "b", "a", "c", "c", "a", "c"]

输出:

a: 3
b: 1
c: 3

5 个回答

7
yourList = ["a", "b", "a", "c", "c", "a", "c"]
duplicateFrequencies = {}
for i in set(yourList):
    duplicateFrequencies[i] = yourList.count(i)

期望的输出是 {a: 3, b: 1, c: 3}

谢谢!! 参考链接

7

在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够好,或者是我们对某些概念理解得不够透彻。比如,有人可能在使用某个库的时候,发现它的功能没有达到预期,这时候就需要仔细检查代码,看看是不是哪里出错了。

另外,编程的世界变化很快,新的技术和工具层出不穷。作为初学者,可能会感到有些迷茫,但只要坚持学习,多动手实践,就能慢慢掌握这些知识。

总之,遇到问题不要气馁,积极寻求帮助,和其他人交流,都是提高自己编程能力的好方法。

In [2]: MyList = ["a", "b", "a", "c", "c", "a", "c"]

In [3]: count = {}

In [4]: for i in MyList:
   ...:     if not i in count:
   ...:         count[i] = 1
   ...:     else:
   ...:         count[i] +=1
   ...:

In [5]: count
Out[5]: {'a': 3, 'b': 1, 'c': 3}
12

这个在Python 2.6.6版本上是可以用的。

a = ["a", "b", "a"]
result = dict((i, a.count(i)) for i in a)
print result

打印输出

{'a': 2, 'b': 1}
26

使用 Counter

>>> from collections import Counter
>>> MyList = ["a", "b", "a", "c", "c", "a", "c"]
>>> c = Counter(MyList)
>>> c
Counter({'a': 3, 'c': 3, 'b': 1})
204

你可以使用 count 来实现这个功能:

my_dict = {i:MyList.count(i) for i in MyList}

>>> print my_dict     #or print(my_dict) in python-3.x
{'a': 3, 'c': 3, 'b': 1}

或者 使用 collections.Counter

from collections import Counter

a = dict(Counter(MyList))

>>> print a           #or print(a) in python-3.x
{'a': 3, 'c': 3, 'b': 1}

撰写回答