Python:随机删除多个列表中的重复项



给定

x = [0,1,2,3]
y = [0,4,3,5]
z = [1,6,7,8]

我需要一个可以随机删除所有三个列表中所有重复项的东西。因此,期望的结果是:

x = [1,2,3]
y = [0,4,5]
z = [6,7,8]

下次运行它应该会给出不同的分布,例如:

x = [0,1,2,3]
y = [4,5]
z = [6,7,8]

我已经发现的所有问题(比如这个问题,删除多个列表中的两个重复项python(都会删除每个列表中的重复项。

提前感谢!

编辑:这是我目前徒劳的努力:

duplicatelist = []
for number in y:
if number in x:
duplicatelist.append(number)
for number in z:
if number in x or number in y:
duplicatelist.append(number)
#now I don*t know how to continue        

如果你随机开始(意思是x,y,z先治疗哪一个(,你可以得到你想要的。

import random
def rm_dup(**kwargs):
inp = kwargs
duplicate = set()
keys = list(inp.keys())
random.shuffle(keys)
out = {k: [] for k in inp.keys()}
for key in keys:
for v in inp[key]:
if v not in duplicate:
out[key].append(v)
duplicate.add(v)
return out

示例:

out = rm_dup(x=x,y=y,z=z)
print(out)

{'x':[2],'y':[0,4,3,5],'z':[1,6,7,8]}

{'x':[0,1,2,3],'y':[4,5],'z':[6,7,8]}…

最新更新