python - 列表列表中的常见元素

标签 python list

我有 2 个列表

a = [(468, 15), (336, 280), (200, 90), (180, 150), (180, 150), (180, 150)]
b = [(200, 200), (200, 90), (200, 90), (180, 150), (180, 150)]

我想在两个列表之间找到相同的元素并消除它们。 b[0]不存在于 a 中,只有 b[1] 之一& b[2]存在于 a , b[3]b[4]两者都存在于 a .

我需要将每个列表中的最大出现次数发送到另一个列表(其他列表被视为重复),即我需要将其作为我的输出

combined = [(468, 15), (336, 280), (200, 200), (200, 90), (200, 90), (180, 150), (180, 150), (180, 150)]

注意:我已经完成了解决方案,但他们将这些列表转换为“集合”,从而消除了“重复”的出现。

有没有简单的方法来做到这一点?

编辑:解释输出是如何产生的

(468, 15)在 a 中出现 1 次。 (336, 280)在 a 中出现 1 次。 (200, 200)在 b 中出现 1 次。 (200, 90)在 a 中出现 1 次,在 b 中出现 2 次。 (180, 150)在 a 中出现 3 次,在 b 中出现 2 次。

输出是两个列表之间的最大出现次数,即

(468, 15)一次。 (336, 280)一次。 (200, 200)一次。 (200, 90)两次。 (180, 150)三次。

按照 combined 中给出的列表制作列表

最佳答案

由于顺序无关紧要,您可以将所有项目放入一个集合中,并添加每个项目的最大出现次数:

a = [(468, 15), (336, 280), (200, 90), (180, 150), (180, 150), (180, 150)]
b = [(200, 200), (200, 90), (200, 90), (180, 150), (180, 150)]

res = [each for each in set(a + b) for i in range(max(a.count(each), b.count(each)))]

res 看起来像这样:

[(180, 150), (180, 150), (180, 150), (200, 200), (468, 15), (336, 280), (200, 90), (200, 90)]

关于python - 列表列表中的常见元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68953782/

相关文章:

python - Python套接字/端口转发

java - 如何制作从列表末尾开始的列表迭代器

python - 如何在python中重复列表中的数字?

c++ - 在 C++ 中使用 Python 3.3 'python33_d.lib' 未找到

python - 生成截断为小数点后两位的随机数

python - html 文件 url 在 django 中无法访问

Python 命令行参数 (Windows)

java - Java 中 ContainsAll 的成本是多少?

python - 查看字符串列表时什么更快? "In"还是 "index"?

python - 在 python 中搜索字典列表