我有一个字典列表,
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/