Python:删除OrderedDict中包含在列表中的任何项目

问题描述:

如果值为'None',我需要删除OrderedDict中的元素。该列表包含我需要检查其值是否包含“无”的密钥。如果密钥全部为“无”,则删除这些元素。 如果列表中有两个输入,那么我可以做到这一点。但如果列表中有10个或更多的输入,我做的方式是不正确的。我需要一个简短的命令,并且首选的命令可以在很短的时间内运行,因为我的数据非常大。Python:删除OrderedDict中包含在列表中的任何项目

# if all items is None in mylist, delete the element from Output 
    mylist = ['Football','Tennis'] 

    Output=[OrderedDict([('index', 88), ('Name', u'Andie'), ('Basketball', u'Yes'), ('Football', u'No'),('Tennis', u'Yes'), 
OrderedDict([('index', 89), ('Name', u'Jackie'), ('Basketball', u'No'), ('Football', None),('Tennis', u'Yes'), 
OrderedDict([('index', 90), ('Name', u'Sarah'), ('Basketball', u'No'), ('Football', None),('Tennis', None)] 

我的命令如果是短列表,但如果列表中有20种运动类型,这种方法效率不高。另外,我需要快速处理命令。

[i for i in Output if i["Football"]!=None and i["Tennis"]!=None] 

在这个例子中,莎拉将从输出中删除。 如果mylist = ['Basketball','Tennis','Football', 'Squash','Hockey','Cricket'],我该怎么处理这个?

+1

与此相同的问题: http://*.com/questions/43860946/python-how-to-remove-elements-with-a-specific-key -if-none-value-exists-order- – Pavan

+2

[Python:如果OrderedDict中没有值,如何使用特定键删除元素](http://*.com/questions/43860946/python-how -to-remove-elements-with-a-specific-key-if-none-value-exists-order-order) –

+0

谢谢。我检查了答案,它没有工作 – bkcollection

尝试过滤器与任何:

lst = filter(lambda i: any(i.get(key) for key in mylist), Output) 
+0

如果OrderedDict对象中没有这样的键,则会引发'KeyError',最好调用'i.get(key) ' –

+0

@vishes_shell谢谢,修正。 – gushitong