Python 如果所有值都是空字符串,则从列表中删除dictionaire

Python 如果所有值都是空字符串,则从列表中删除dictionaire,python,Python,我有一个词典列表(列表中的所有词典都有相同的9个键),我想删除列表中9个键的值为“”的词典。但是,如果至少有一个键有一个值,它将保留整个dictionaire(包括位于“”处的其他键) 例如(仅需3个键即可简化) 输出将是 [{Key1:JJ, Key2:GG, Key3:''},{Key1:'', Key2:GG, Key3:''}] 欢迎任何帮助 使用列表理解和any(): 在Python3中使用any(d.values()) any()仅在输入列表中存在任何非空值时返回True。通过使用

我有一个词典列表(列表中的所有词典都有相同的9个键),我想删除列表中9个键的值为“”的词典。但是,如果至少有一个键有一个值,它将保留整个dictionaire(包括位于“”处的其他键)

例如(仅需3个键即可简化)

输出将是

[{Key1:JJ, Key2:GG, Key3:''},{Key1:'', Key2:GG, Key3:''}]

欢迎任何帮助

使用列表理解和
any()

在Python3中使用
any(d.values())

any()
仅在输入列表中存在任何非空值时返回
True
。通过使用
d.itervalues()
我们测试字典中最小数量的值,以证明其中有一个非空值

演示:

如果除空字符串之外的任何值也可以被测试为false(例如
None
0
),那么也可以使用显式测试:

[d for d in inputlist if any(v != '' for v in d.itervalues())]
使用a根据*返回的内容筛选密钥:


或者,如果值都是字符串,则可以执行以下操作:

>>> dct = [{'Key1':'JJ', 'Key2':'GG', 'Key3':''},{'Key1':'', 'Key2':'', 'Key3':''},{'Key1':'',
'Key2':'GG', 'Key3':''},{'Key1':'', 'Key2':'', 'Key3':''}]
>>> [x for x in dct if any(x.values())]
[{'Key3': '', 'Key2': 'GG', 'Key1': 'JJ'}, {'Key3': '', 'Key2': 'GG', 'Key1': ''}]
>>>
这是因为在Python中空字符串的计算结果为
False


*注意:如果您使用的是Python2.x,那么应该使用代替
dict.values
。它更高效,因为它返回的是迭代器而不是列表

>>> inputlist = [{'Key1': 'JJ', 'Key2': 'GG', 'Key3':''}, {'Key1': '', 'Key2': '', 'Key3': ''}, {'Key1': '', 'Key2': 'GG', 'Key3': ''}, {'Key1': '', 'Key2': '', 'Key3': ''}]
>>> [d for d in inputlist if any(d.itervalues())]
[{'Key3': '', 'Key2': 'GG', 'Key1': 'JJ'}, {'Key3': '', 'Key2': 'GG', 'Key1': ''}]
[d for d in inputlist if any(v != '' for v in d.itervalues())]
>>> dct = [{'Key1':'JJ', 'Key2':'GG', 'Key3':''},{'Key1':'', 'Key2':'', 'Key3':''},{'Key1':'',
'Key2':'GG', 'Key3':''},{'Key1':'', 'Key2':'', 'Key3':''}]
>>> [x for x in dct if any(y != '' for y in x.values())]
[{'Key3': '', 'Key2': 'GG', 'Key1': 'JJ'}, {'Key3': '', 'Key2': 'GG', 'Key1': ''}]
>>>
>>> dct = [{'Key1':'JJ', 'Key2':'GG', 'Key3':''},{'Key1':'', 'Key2':'', 'Key3':''},{'Key1':'',
'Key2':'GG', 'Key3':''},{'Key1':'', 'Key2':'', 'Key3':''}]
>>> [x for x in dct if any(x.values())]
[{'Key3': '', 'Key2': 'GG', 'Key1': 'JJ'}, {'Key3': '', 'Key2': 'GG', 'Key1': ''}]
>>>