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

时间:2017-05-09 09:59:56

标签: python

如果值为'无'我需要删除OrderedDict中的元素。该列表包含我需要检查的密钥是否包含'无'他们的价值观。如果全部是“无”。对于键,然后删除元素。 如果列表很短,有两个输入,我可以做到。但如果列表有10个或更多输入,我的方式是不对的。我需要一个简短的命令,并且喜欢可以在非常短的时间内运行的命令,因为我的数据非常大。

# 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]

在示例中,Sarah将从Output中删除。 如果mylist = ['Basketball','Tennis','Football', 'Squash','Hockey','Cricket'],我应该如何处理这个问题?

1 个答案:

答案 0 :(得分:2)

尝试使用any进行过滤:

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