繁体   English   中英

将 2D 列表项与 python 中的每个 rest 进行比较

[英]Comparing 2D list item with each of the rest in python


我正在尝试比较我的 2D 列表项。 我的列表如下所示:
 print(data) [['1', '2'], ['1', '3'], ['2', '4'], ['2', '5'], ['2', '6'], ['3', '4'], ['2', '1'], ['3', '5'], ['4', '6'], ['5', '6']]

我的意思是查找是否有相同的项目 2 次。 不完全一样,但在我的情况下是:
data[0]['1', '2']data[6]['2', '1'] 我需要删除像这样的“重复项”。
只是想知道是否有一些 function 用于此。
谢谢你们。

简单的列表理解:

data = [list(i) for i in set([tuple(sorted(i)) for i in data])]
print(data)

我喜欢@Abhinav Mathur 的解决方案

但是如果你想保留列表顺序和格式,解决方案可能会更详细一些

像这样:

data = [['1', '2'], ['1', '3'], 
        ['2', '4'], ['2', '5'], 
        ['2', '6'], ['3', '4'], 
        ['2', '1'], ['3', '5'], 
        ['5', '3'], ['4', '6'], 
        ['5', '6'], ['1', '2'],
        ['5', '3']]


len_data = len(data)
i=0
while i < len_data:
  curr_value = sorted(data[i])
  data[i+1:] = [val for val in data[i+1:] if sorted(val) != curr_value]
  i+=1
  len_data = len(data)

print(data)

我修改了列表,添加了更多重复项和不同的值来演示它是如何工作的

结果

[['1', '2'], ['1', '3'], ['2', '4'], ['2', '5'], ['2', '6'], ['3', '4'], ['3', '5'], ['4', '6'], ['5', '6']]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM