Python – 删除字典列表中的空值类型
有时,在使用Python字典时,我们需要删除所有实际上为 Null 的值,即不包含任何有意义的值并且要在处理数据之前删除,这可以是空字符串、空列表、字典甚至 0。这在数据预处理中有应用。让我们讨论可以执行此任务的某些方式。
方法#1:使用列表推导
这是可以执行此任务的粗略方式的简写。在此我们只使用有效值重新制作字典。
# Python3 code to demonstrate working of
# Remove None value types in dictionaries list
# Using list comprehension
# initializing list
test_list = [{'gfg' : 4, 'is' : '', 'best' : []}, {'I' : {}, 'like' : 5, 'gfg' : 0}]
# printing original list
print("The original list is : " + str(test_list))
# Remove None value types in dictionaries list
# Using list comprehension
res = [ele for ele in ({key: val for key, val in sub.items() if val} for sub in test_list) if ele]
# printing result
print("The filtered list : " + str(res))
输出 :
The original list is : [{'is': '', 'best': [], 'gfg': 4}, {'like': 5, 'gfg': 0, 'I': {}}]
The filtered list : [{'gfg': 4}, {'like': 5}]
方法 #2:使用filter() + lambda
+ 列表推导
上述方法的组合可以用来解决这个问题。在此,我们使用 filter() + lambda 来执行上述方法中的条件语句任务,以减少嵌套级别。
# Python3 code to demonstrate working of
# Remove None value types in dictionaries list
# Using filter() + lambda + list comprehension
# initializing list
test_list = [{'gfg' : 4, 'is' : '', 'best' : []}, {'I' : {}, 'like' : 5, 'gfg' : 0}]
# printing original list
print("The original list is : " + str(test_list))
# Remove None value types in dictionaries list
# Using filter() + lambda + list comprehension
res = list(filter(None, ({key : val for key, val in sub.items() if val} for sub in test_list)))
# printing result
print("The filtered list : " + str(res))
输出 :
The original list is : [{'is': '', 'best': [], 'gfg': 4}, {'like': 5, 'gfg': 0, 'I': {}}]
The filtered list : [{'gfg': 4}, {'like': 5}]