python - 如何在字典列表中使用列表和字典理解添加键和值?

标签 python python-3.x list dictionary

我有一个字典列表,

ip_list = [{'1403': [-56, -58], 'data': '1'},
           {'1403': [-56, -58], 'data': '0'}]

现在我需要在字典中添加一个新键(即“mac”)和值(即“xyz”),如果字典包含“data”= 1 并且结果应该是,

expected_outcome = [{'1403': [-56, -58], 'data': '1', 'mac':'xyz'},
                    {'1403': [-56, -58], 'data': '0'}]

我试过,

list_dict_comp = [dict(item, **{'mac':'xyz'}) for item in ip_list]

然而,上面的表达式给出了,

list_dict_comp = [{'1403': [-56, -58], 'data': '1', 'mac':'xyz'},
                  {'1403': [-56, -58], 'data': '0', 'mac':'xyz'}]

谁能帮助我在一个表达式中同时使用列表和字典理解来实现“expected_outcome”

最佳答案

你得到的原因

list_dict_comp = [{'1403': [-56, -58], 'data': '1', 'mac':'xyz'},
                  {'1403': [-56, -58], 'data': '0', 'mac':'xyz'}]

是因为您要将 {'mac':'xyz'} 添加到列表中的每个元素。

为什么不让您的生活更轻松,只需遍历 ip_list,如果 data 出现在元素的键中,则添加 {'mac':'xyz'} ip_list 的值,data 的值为 '1'

ip_list = [{'1403': [-56, -58], 'data': '1'},
           {'1403': [-56, -58], 'data': '0'}]

for ip in ip_list:
    if ip.get('data') == '1':
        ip['mac'] = 'xyz'
print(ip_list)
#[{'1403': [-56, -58], 'data': '1', 'mac': 'xyz'}, {'1403': [-56, -58], 'data': '0'}]

关于python - 如何在字典列表中使用列表和字典理解添加键和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55626692/

相关文章:

python - 致命的 Python 错误 : init_sys_streams: can't initialize sys standard streams AttributeError: module 'io' has no attribute 'OpenWrapper'

java - 每次按下按钮时重复声音

python - 在Python中打开网站框架或图像

python - 使用 Django 中的自定义字段扩展 django.contrib.auth.models.User 模型

python - 类型错误 : write() argument must be str, 不是文本

java - 如何过滤 2 个巨大的列表,其中包含数百万个具有相同 ID 的项目

python - 尝试将文件名传输到不同的函数

python 搜索以字母开头的字符串

python - 即使在关闭 pyqt 应用程序后网络摄像头实例也不会被释放

python - 代码从 python 2.7 到 3.5 (unicode)