从保存在列表中的字典中删除空值的有效方法是什么。
list1 = [{'l1k1': 'l1v1', 'l1k2': 'l1v2'}, {'l2k1': 'l2v1', 'l2k2': ''}]
list2 = []
for l in list1:
d = {}
for k, v in l.items():
if v.strip() is not None or v.strip() != '':
d[k] = v
list2.append(d)
print(list2)
实际输出:
[{'l1k1': 'l1v1', 'l1k2': 'l1v2'}, {'l2k1': 'l2v1', 'l2k2': ''}]
预期输出:
[{'l1k1': 'l1v1', 'l1k2': 'l1v2'}, {'l2k1': 'l2v1'}]
请您参考如下方法:
试试这个:
list2 = [{k:v for k,v in i.items() if v!= '' or v.strip() != ''} for i in list1]
我们可以同时使用 dict-comprehension 和 list-comprehension。我们循环遍历 list1 的每个元素(这是一个字典),并只取那些键值对,其中值或 value.strip() 中的相应键字典不是空字符串。
用于取消带有 None 类型的值的较短版本:
list2 = [{k:v for k,v in i.items() if v} for i in list1]
