从字典列表中删除空条目
Removing null entries from a list of dictionaries
我有这样一个字典列表:
[
{'property_a': 'a1', 'property_b': 'b1'},
{'property_a': 'a2', 'property_b': 'b2'},
{'property_a': 'a3'}
]
如何删除没有 属性 property_b
的条目?我试过以某种方式访问 属性 名称(下面的示例):
for entry in mylist['property_b']:
for k in list(entry.keys()):
if entry[k] == None:
del entry[k]
但不是这样的。
我需要的是完全删除这些条目,导致 list
例如:
[
{'property_a': 'a1', 'property_b': 'b1'},
{'property_a': 'a2', 'property_b': 'b2'}
]
尝试:
lst = [
{"property_a": "a1", "property_b": "b1"},
{"property_a": "a2", "property_b": "b2"},
{"property_a": "a3"},
]
lst = [d for d in lst if "property_b" in d]
print(lst)
打印:
[
{"property_a": "a1", "property_b": "b1"},
{"property_a": "a2", "property_b": "b2"},
]
mylist['property_b'] 不会 return 任何东西,因为列表索引必须始终是整数(列表只是一个项目数组, 'property_b' 嵌套在这些项目中,所以无法立即访问)
您需要做的是遍历您的列表并检查每个字典是否包含 'property_b' 作为键。
这可以通过以下两种方式之一完成:
new_list = []
for item in mylist:
if 'property_b' in item:
new_list.append(item)
这是我的首选方式(使用列表理解):
new_list = [item for item in mylist if 'property_b' in item]
他们做同样的事情,后者更优雅。
我有这样一个字典列表:
[
{'property_a': 'a1', 'property_b': 'b1'},
{'property_a': 'a2', 'property_b': 'b2'},
{'property_a': 'a3'}
]
如何删除没有 属性 property_b
的条目?我试过以某种方式访问 属性 名称(下面的示例):
for entry in mylist['property_b']:
for k in list(entry.keys()):
if entry[k] == None:
del entry[k]
但不是这样的。
我需要的是完全删除这些条目,导致 list
例如:
[
{'property_a': 'a1', 'property_b': 'b1'},
{'property_a': 'a2', 'property_b': 'b2'}
]
尝试:
lst = [
{"property_a": "a1", "property_b": "b1"},
{"property_a": "a2", "property_b": "b2"},
{"property_a": "a3"},
]
lst = [d for d in lst if "property_b" in d]
print(lst)
打印:
[
{"property_a": "a1", "property_b": "b1"},
{"property_a": "a2", "property_b": "b2"},
]
mylist['property_b'] 不会 return 任何东西,因为列表索引必须始终是整数(列表只是一个项目数组, 'property_b' 嵌套在这些项目中,所以无法立即访问)
您需要做的是遍历您的列表并检查每个字典是否包含 'property_b' 作为键。
这可以通过以下两种方式之一完成:
new_list = []
for item in mylist:
if 'property_b' in item:
new_list.append(item)
这是我的首选方式(使用列表理解):
new_list = [item for item in mylist if 'property_b' in item]
他们做同样的事情,后者更优雅。