使用`set`计算列表元素

时间:2016-01-14 06:14:48

标签: python python-2.7

在较早的帖子(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)

2 个答案:

答案 0 :(得分:1)

我们在原始列表上调用count,而不是计算集。

答案 1 :(得分:1)

这些解决方案仅创建set s,因此它们只计算每个元素的出现次数。对于类似[1, 2, 1]的内容,天真的计数器会计算1并找到一对,然后计算2并查找其中一个,然后计算{{1} } s 第二次(不太有用)。由于1仅包含唯一元素,因此消除了这种重复计数。 set setlist{1, 2},因此原始1list次出现的次数仅计入一次{{1}原始2中的出现次数仅计算一次。