在较早的帖子(Python: count repeated elements in the list)中,我注意到两个回复(回答3和5),使用set
来计算列表的重复元素。
在我最近问自己的问题(Compare lines in 2 text files with different number of columns)中,有人提到set
只包含独特的元素; python文档说的相同(https://docs.python.org/2/library/sets.html)。
如果set
应该仅包含唯一元素,那么这样的事情是如何工作的:
yourList = ["a", "b", "a", "c", "c", "a", "c"]
duplicateFrequencies = {}
for i in set(yourList):
duplicateFrequencies[i] = yourList.count(i)
答案 0 :(得分:1)
我们在原始列表上调用count,而不是计算集。
答案 1 :(得分:1)
这些解决方案仅创建set
s,因此它们只计算每个元素的出现次数。对于类似[1, 2, 1]
的内容,天真的计数器会计算1
并找到一对,然后计算2
并查找其中一个,然后计算{{1} } s 第二次(不太有用)。由于1
仅包含唯一元素,因此消除了这种重复计数。 set
set
中list
为{1, 2}
,因此原始1
中list
次出现的次数仅计入一次{{1}原始2
中的出现次数仅计算一次。