为了账号安全,请及时绑定邮箱和手机立即绑定

从嵌套类中删除反向重复项 - python

从嵌套类中删除反向重复项 - python

呼如林 2022-12-27 15:49:37
我正在处理从列表中删除重复元素的代码。重复顺序可能不同,但我仍然认为两者相同。例如,我会考虑[[m, b], [c, d]]并[[c, d], [m, b]]删除重复项。我正在编写一个代码,将这些代码识别为重复的,并从整个列表中删除多余的。到目前为止,我在一个没有任何重复项的列表上进行了尝试,因此结束列表应该没有变化。这是名单,A= [[[a1, b1], [a1, b1]], [[a2, b2], [a2, b2]], [[a3, b3], [a3, b3]], [[a4, b4], [a4, b4]]]我使用的代码是,for i in A:    for j in A:        if j[1]== i[0]:            if j[0]==i[1]:                A.remove(j)我希望代码将给定内部列表 (j[1]) 中的第二个元素与另一个内部列表 (i[0]) 中的第一个元素进行比较,j[0] 和 i[1] 也类似,并且如果它们相等(即 i 和 j 彼此重复),则从列表中删除其中一个元素。问题是,使用此代码,输出不应该与起始列表 (A) 不同,但结果是这样的,[[[a2, b2], [a2, b2]], [[a4, b4], [a4, b4]]]我只是在寻找为什么会发生这种情况以及如何更改我的代码以避免该问题的输入。
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

要比较两个列表的交集,使用sets会很有帮助,尤其是当您的列表有两个以上的元素时。


a = ['m', 'n']

b = ['n', 'o']

print(set(a) & set(b)) # The & operator returns the intersecting elements


-> {'n'}

至于你的问题,这段代码应该有效:


for a in A:

  B = A.copy()

  B.remove(a) # so you don't compare a to a and mark it as a duplicate

  for b in B:

    if set(b[0]) & set(b[1]):

      A.remove(b)


查看完整回答
反对 回复 2022-12-27
?
HUX布斯

TA贡献1876条经验 获得超6个赞

要比较两个列表的交集,使用sets会很有帮助,尤其是当您的列表有两个以上的元素时。


a = ['m', 'n']

b = ['n', 'o']

print(set(a) & set(b)) # The & operator returns the intersecting elements


-> {'n'}

至于你的问题,这段代码应该有效:


for a in A:

  B = A.copy()

  B.remove(a) # so you don't compare a to a and mark it as a duplicate

  for b in B:

    if set(b[0]) & set(b[1]):

      A.remove(b)


查看完整回答
反对 回复 2022-12-27
?
四季花海

TA贡献1811条经验 获得超5个赞

试试这个:


>>> import numpy as np

>>> def remove_duplicates(A):

...     for sublist in A:

...             sublist.sort()

...     B = []

...     for sublist in A:

...             if sublist not in B:

...                     B.append(sublist)

...     return B

... 

>>> A = np.random.randint(low=0, high=3, size=(8, 2)).tolist()

>>> A

[[0, 1], [1, 0], [0, 2], [0, 0], [2, 2], [2, 2], [0, 2], [1, 0]]

>>> remove_duplicates(A)

[[0, 1], [0, 2], [0, 0], [2, 2]]

在 python 3.7.7 上测试。


查看完整回答
反对 回复 2022-12-27
  • 3 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信