Python 3.x python-if-else-列表理解-在if中赋值
我需要使用python列表理解从一个字典向另一个字典赋值; csv_a和csv_b是两本字典。我尝试执行以下操作Python 3.x python-if-else-列表理解-在if中赋值,python-3.x,data-structures,Python 3.x,Data Structures,我需要使用python列表理解从一个字典向另一个字典赋值; csv_a和csv_b是两本字典。我尝试执行以下操作 [[csv_a[i][j] = csv_b[j] if j in csv_b.keys() else ' '] for i in csv_a.keys()] 我得到了表示“=”的语法错误 请帮忙 样本数据: csv_a = {'logging': {'host': 'logging.com', 'port': '443', 'basepath': '/api', 'protocol
[[csv_a[i][j] = csv_b[j] if j in csv_b.keys() else ' '] for i in csv_a.keys()]
我得到了表示“=”的语法错误
请帮忙
样本数据:
csv_a = {'logging': {'host': 'logging.com', 'port': '443', 'basepath': '/api', 'protocol': 'HTTPS', 'user': 'abc', 'password': '1234', 'secrets': 0}
csv_b = {'secrets' : {'client_id' : 'abc', 'client_secret' : 'efg'}}
预期产出:
{'logging': {'host': 'logging.com', 'port': '443', 'basepath': '/api', 'protocol': 'HTTPS', 'user': 'abc', 'password': '1234', 'secrets': {'client_id' : 'abc', 'client_secret' : 'efg'}}
只需使用
csv_b
dict更新logging
键的值即可
csv_a = {'logging': {'host': 'logging.com', 'port': '443', 'basepath': '/api', 'protocol': 'HTTPS', 'user': 'abc', 'password': '1234', 'secrets': 0}}
csv_b = {'secrets' : {'client_id' : 'abc', 'client_secret' : 'efg'}}
csv_a["logging"].update(csv_b)
print(csv_a)
{'logging': {'host': 'logging.com', 'port': '443', 'basepath': '/api', 'protocol': 'HTTPS', 'user': 'abc', 'password': '1234', 'secrets': {'client_id': 'abc', 'client_secret': 'efg'}}}
这将使您获得所需的输出
或者,您可以为循环选择:
for k in csv_a.keys():
csv_a[k].update(csv_b)
发布两个词典的示例数据添加了示例数据,谢谢发布预期输出为什么不-csv\u a[“日志记录”]。更新(csv\u b)
?我将立即尝试并返回。作为一种间歇解决方案,我创建了一个函数,并将两个字典作为参数传递,以将值从一个dict分配给另一个dict。与硬编码csv_a['logging']不同,我希望从csv_a.keys()动态传递该值,因此我使用了列表理解