Python 如果键不存在,则将键添加到字典列表
Python add key to list of dictionary if key doesn't exist
我想将键 'Name' 添加到词典列表中,无论哪个词典 'Name' 不存在。
例如,
[dict(item, **{'Name': 'apple'}) for item in d_list]
将更新键 'Name' 的值,即使键已经存在并且
[dict(item, **{'Name': 'apple'}) for item in d_list if 'Name' not in item]
returns空列表
你需要处理这两种不同的情况。如果列表为空,如果不是。
不可能在单个列表理解语句中处理这两个用例,因为当列表为空时,它将始终return 零值(空列表)。就像做for i in my_list
。如果列表为空,则不会执行for块中的代码。
我会用一个循环来解决它。我发现它更具可读性。
>>> default = {"Name": "apple"}
>>> miss_map = {"Data": "text"}
>>> exist_map = {"Name": "pie"}
>>>
>>> d = [miss_map, exist_map]
>>>
>>> list_dict = [miss_map, exist_map]
>>> for d in list_dict:
... if "Name" not in d.keys():
... d.update(default)
...
>>> list_dict
[{'Data': 'text', 'Name': 'apple'}, {'Name': 'pie'}]
>>>
然后您可以将它移到它自己的函数中并将字典列表传递给它。
一行代码:
d_list = [{**d, "Name": "apple"} for d in d_list if "Name" not in d] + [d for d in d_list if "Name" in d]
根据 Abdul Aziz 的评论,我可以使用
在 1 行中完成
[item.setdefault("Name", 'apple') for item in d_list]
我想将键 'Name' 添加到词典列表中,无论哪个词典 'Name' 不存在。
例如,
[dict(item, **{'Name': 'apple'}) for item in d_list]
将更新键 'Name' 的值,即使键已经存在并且
[dict(item, **{'Name': 'apple'}) for item in d_list if 'Name' not in item]
returns空列表
你需要处理这两种不同的情况。如果列表为空,如果不是。
不可能在单个列表理解语句中处理这两个用例,因为当列表为空时,它将始终return 零值(空列表)。就像做for i in my_list
。如果列表为空,则不会执行for块中的代码。
我会用一个循环来解决它。我发现它更具可读性。
>>> default = {"Name": "apple"}
>>> miss_map = {"Data": "text"}
>>> exist_map = {"Name": "pie"}
>>>
>>> d = [miss_map, exist_map]
>>>
>>> list_dict = [miss_map, exist_map]
>>> for d in list_dict:
... if "Name" not in d.keys():
... d.update(default)
...
>>> list_dict
[{'Data': 'text', 'Name': 'apple'}, {'Name': 'pie'}]
>>>
然后您可以将它移到它自己的函数中并将字典列表传递给它。
一行代码:
d_list = [{**d, "Name": "apple"} for d in d_list if "Name" not in d] + [d for d in d_list if "Name" in d]
根据 Abdul Aziz 的评论,我可以使用
在 1 行中完成[item.setdefault("Name", 'apple') for item in d_list]