删除多个列表python中的两个重复项

mb5*_*567 5 python list python-3.x

我有三个列表X,Y,Z如下:

X: [1, 1, 2, 3, 4, 5, 5, 5]
Y: [3, 3, 2, 6, 7, 1, 1, 2]
Z: [0, 0, 1, 1, 2, 3, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我试图在列表的相同索引处删除两个重复的值集,得到如下的缩减列表,所有三个列表在最初和结束时始终具有相同的长度:

X: [2, 3, 4, 5]
Y: [2, 6, 7, 2]
Z: [1, 1, 2, 4]
Run Code Online (Sandbox Code Playgroud)

我尝试使用zip(X,Y,Z)函数,但我无法对其进行索引,而dict.fromkeys只删除其中一个重复项,并将另一个留在新列表中.我希望能够删除这两个.

任何帮助表示赞赏!

jpp*_*jpp 5

使用collections.Counterzip,您可以计算独特的三胞胎.

然后通过生成器理解删除重复项.

from collections import Counter

X = [1, 1, 2, 3, 4, 5, 5, 5]
Y = [3, 3, 2, 6, 7, 1, 1, 2]
Z = [0, 0, 1, 1, 2, 3, 3, 4]

c = Counter(zip(X, Y, Z))

X, Y, Z = zip(*(k for k, v in c.items() if v == 1))

print(X, Y, Z, sep='\n')

(2, 3, 4, 5)
(2, 6, 7, 2)
(1, 1, 2, 4)
Run Code Online (Sandbox Code Playgroud)

请注意,如果要求排序并且您没有使用Python 3.6+,则可以通过子类化创建"OrderedCounter" collections.OrderedDict.