Python从两个列表中删除列表项的第一次出现

时间:2018-07-02 11:32:08

标签: python python-3.x

我正在使用骰子辊使用python取消模子。我已经创建了模具卷并将它们存储在列表中。 0是第一组骰子,1是第二组骰子。

{0: [4,2,3,2], 1: [2,3,6]}

python脚本在两个列表中找到每个唯一编号的第一个匹配编号,然后将其从列表中删除。

结果后:

{0: [4,2], 1: [6]}

我似乎找不到正确的方法来实现这一目标。我已经研究了itertoolsfind_first,但我想不出一种使之起作用的方法。

有人有什么秘诀吗?

2 个答案:

答案 0 :(得分:2)

尝试一下:

dct = {0: [4, 2, 3, 2], 1: [2, 3, 6]}
new_dct = dct[0].copy()
for i in new_dct:
    if i in dct[1]:
        dct[0].remove(i)
        dct[1].remove(i)
print(dct)

更新:

如果需要,您可以更改

new_dct = dct[0].copy()
for i in new_dct:

for i in dct[0][:]:

答案 1 :(得分:0)

我认为这会对您有所帮助

l0_ = [4,2,3,2]
l0 = list(l0_) # this is needed to make a deep copy of l0_
l1 = [2,3,6]
for i in l0_:
    if i in l1:
        l0.remove(i)
        l1.remove(i)
res = {0:l0, 1:l1}
res

如果您不想考虑重复,可以先将列表转换为集合。