基于前 2 个元素从嵌套列表中删除重复项

joh*_*ohn 5 python list

仅当前 2 个元素相同时,我才尝试从嵌套列表中删除重复项,而忽略第三个...

列表:

L = [['el1','el2','value1'], ['el3','el4','value2'], ['el1','el2','value2'], ['el1','el5','value3']]
Run Code Online (Sandbox Code Playgroud)

会返回:

L = [['el3','el4','value2'], ['el1','el2','value2'], ['el1','el5','value3']]
Run Code Online (Sandbox Code Playgroud)

我在这里找到了一种简单的方法来做类似的事情

dict((x[0], x) for x in L).values()
Run Code Online (Sandbox Code Playgroud)

但这仅适用于第一个元素而不适用于前两个元素,但这正是我想要的。

And*_*ark 4

如果顺序无关紧要,您可以使用相同的方法,但使用第一个和第二个元素的元组作为键:

{(x[0], x[1]): x for x in L}.values()
Run Code Online (Sandbox Code Playgroud)

或者在 2.7 之前的 Python 版本上:

dict(((x[0], x[1]), x) for x in L).values()
Run Code Online (Sandbox Code Playgroud)

(x[0], x[1])不要使用可以使用的,而是tuple(x[:2])使用您认为更具可读性的那个。