如何根据列表中的元素从Python字典中删除元素?

时间:2016-01-03 19:43:06

标签: python list dictionary

我有一个元组列表:

lst=[(6, 'C'), (6, 'H'), (2, 'C'), (2, 'H')]

还有一本字典:

dct={'6C': (6, 'C'), '6H': (6, 'H'), '9D': (9, 'D'), '10D': (10, 'D'), '11S': (11, 'S'), '2C': (2, 'C'), '2H': (2, 'H')}

如何从列表中删除列表中的元素?在这个例子中,我想要的输出是:

dct2={'9D': (9, 'D'), '10D': (10, 'D'), '11S': (11, 'S')}

4 个答案:

答案 0 :(得分:8)

我会使用词典理解来将键映射到列表中未找到的值:

new_dict = {k: v for k, v in old_dict.items() if v not in the_list} # filter from the list

答案 1 :(得分:3)

如果您使用的是Python 2,请尝试以下操作:

for key, value in dct.items():
    if value in lst:
        del dct[key]

编辑:

适用于Python 2和3的解决方案:

dict((key, value) for key, value in dct.items() if value not in lst)

答案 2 :(得分:1)

使用valfilter function from toolz

from toolz import valfilter
valfilter(lst.__contains__, dct)

答案 3 :(得分:0)

我会在过滤掉元素之前设置lst,因为它是数据结构,让你测试元素是否更有效。

purge_set = set(lst)
dict(filter(lambda (k, v): v not in purge_set, dct.iteritems()))