Python 我需要把两张清单列在一起

Python 我需要把两张清单列在一起,python,list,dictionary,Python,List,Dictionary,我有两个很长的列表,我知道短列表中的所有元素都包含在长列表中,但是我需要隔离长列表中不在短列表中的元素,以便我可以从我从长列表中获得的字典中分别删除它们。 到目前为止,我得到的是: for e in range(len(lst_ck)): if lst_ck[e] not in lst_rk: del currs[lst_ck[e]] del lst_ck[e] lst\u ck是较长的列表,lst\u rk是较短的列表,currs是源于lst\u ck

我有两个很长的列表,我知道短列表中的所有元素都包含在长列表中,但是我需要隔离长列表中不在短列表中的元素,以便我可以从我从长列表中获得的字典中分别删除它们。 到目前为止,我得到的是:

for e in range(len(lst_ck)):
    if lst_ck[e] not in lst_rk:
        del currs[lst_ck[e]]
        del lst_ck[e]

lst\u ck
是较长的列表,
lst\u rk
是较短的列表,
currs
是源于
lst\u ck
的词典。如果有帮助的话,它们都是字典中的3位数键列表。

使用集合查找差异:

l1 = [1,2,3,4]

l2 = [1,2,3,4,6,7,8]

print(set(l2).difference(l1))
set([6, 7, 8]) # in l2 but not in l1
然后移除元素

 diff = set(l2).difference(l1):
 your_list[:] = [ele for ele in your_list of ele not in diff]
如果列表很大,您可能更喜欢生成器表达式:

your_list[:] = (ele for ele in your_list of ele not in diff)

如果您不关心同一项目的多次出现,请使用
set

diff = set(lst_ck) - set(lst_rk)
如果您介意,请尝试以下方法:

diff = [e for e in lst_rk if e not in lst_ck]

相反,你应该从大列表中减去小列表。