我有 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/