如果值为'无'我需要删除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'],
我应该如何处理这个问题?
答案 0 :(得分:2)
尝试使用any进行过滤:
lst = filter(lambda i: any(i.get(key) for key in mylist), Output)