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]