Python TypeError:更改字典值时无法更改类型:“列表”

Python TypeError:更改字典值时无法更改类型:“列表”,python,list,dictionary,Python,List,Dictionary,我需要用d2['cmd']替换d1字典中的'cmd'键 我的代码引发以下错误: TypeError:更改字典值时无法更改类型:“列表” 这里需要嵌套的字典理解。或者像本例中的另一种选择,一个字典理解,进一步解包到字典中。根据,您可以使用如下所示的语法合并词典,其中后面的值将始终覆盖前面的值: {k1:{**v1[0], **d2} for k1,v1 in d1.items()} {'db1': {'cmd': 'test', 'request': 'POST', 'url': 'http:/

我需要用d2['cmd']替换d1字典中的'cmd'键

我的代码引发以下错误:

TypeError:更改字典值时无法更改类型:“列表”


这里需要嵌套的字典理解。或者像本例中的另一种选择,一个字典理解,进一步解包到字典中。根据,您可以使用如下所示的语法合并词典,其中后面的值将始终覆盖前面的值:

{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'}}

如果我正确理解了你的问题,你可以这样做,这很容易理解

对于d1中的k、v,项目: v[0]。已更新2
d2.getv,v=>d2.getk,vbut d1['cmd']不存在。对于k1,应为{k1:[{**v1[0],**d2}],对于d1中的v1。items},请注意,这些项实际上是包含一个字典的列表。一个更简单的解决方案是通过更新内部映射来修改映射,除非需要原始映射。Yes保留初始结构Yes。但我没有这样做,因为我看不出在@metatoasterwhat是**v1[0]和**d2的列表中包含一个字典的意义。我知道它合并了两个字典,并更新了更多信息@Mous
{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'}}