【发布时间】:2022-01-02 18:42:36
【问题描述】:
我得到一个这样的列表:
pairs = [[(0, 0), (0, 1), (0, 2), (1, 2), (2, 2), (3, 2), (3, 1), (2, 1), (3, 1), (3, 2), (3, 3), (3, 2), (2, 2)],
[(2, 2), (2, 1)],
[(1, 1), (1, 2), (2, 2), (2, 1)]]
所需的输出是:{(2,2)}。
我需要找到最常见的元素。如果存在重复多次的元素,则它必须返回多个值。
我尝试使用三个列表的交集来解决它,但它打印出 {(2,1), (2,2)},而不是 {(2,2)},因为元素 (2,2) 在第一个列表中重复了两次。
我看到了一些import collections 的示例,但我不明白它们,所以我不知道如何更改代码以适合我的问题。
我还尝试了以下方法:
seen = set()
repeated = set()
for l in pairs:
for i in set(l):
if i in seen:
repeated.add(i)
if i in repeated:
repeated.add(i)
else:
seen.add(i)
但仍然没有返回正确答案。
【问题讨论】:
-
请使用tour、阅读what's on-topic here、How to Ask和question checklist,并提供minimal reproducible example。 “为我实现此功能”与此站点无关,因为 SO 不是免费的在线编码服务。你必须诚实地尝试,然后就你的算法或技术提出一个具体问题。
-
你可以为一个元组列表创建一个字典,使用元组作为键和每个元组的计数作为值吗?
-
显而易见的解决方案是遍历列表,计算每个元素出现的次数,并返回计数最高的元素。你试过吗?
-
提示:来自
collections的defaultdict可能非常有用。