我需要用d2['cmd']
替换d1词典中的'cmd'键。
d1 = {'db1': [{'url': 'http://localhost:8080/api', 'cmd': 'test\\nshow databases ', 'request': 'POST'}], 'db2': [{'url': 'http://localhost:8080/api', 'cmd': 'test\\nshow databases ', 'request': 'POST'}]}
d2 = {'cmd': 'test'}
{k: d2.get(v, v) for k, v in d1.items()}
我的代码抛出此错误:
TypeError:不可散列的类型:“ list”,同时更改字典值。
答案 0 :(得分:1)
您需要在此处理解嵌套词典。或在这种情况下的另一种选择,是将词典理解与进一步分解成词典。根据{{3}},您可以使用以下所示的语法合并字典,其中后面的值将始终覆盖前面的值:
{k1:{**v1[0], **d2} for k1,v1 in d1.items()}
{'db1': {'cmd': 'test', 'request': 'POST', 'url': 'http://localhost:8080/api'},
'db2': {'cmd': 'test', 'request': 'POST', 'url': 'http://localhost:8080/api'}}
答案 1 :(得分:0)
如果我正确理解了您的问题,您可以这样做,这很容易阅读。
for k, v in d1.items():
v[0].update(d2)