如何仅将新键插入现有键:值对字典python

har*_*rry 5 python json dictionary

我有一个如下的字典:

dict1={
       'item1': 
         {'result': 
           [{'val': 228, 'no': 202}]
         }, 
       'item2': 
         {'result':   
           [{'value': 148, 'year': 201}]
         } 
      }
Run Code Online (Sandbox Code Playgroud)

我们如何为每个项目插入一个新的键“类别”,以便输出如下所示:

output={
       'item1': 
        {'category': 
          {'result': 
           [{'val': 228, 'no': 202}]
          }
        }, 
       'item2': 
       {'category':  
         {'result': 
           [{'value': 148, 'year': 201}]
         }
       }
       }
Run Code Online (Sandbox Code Playgroud)

目前,我有 key:value ,我希望插入具有相同值的 newkey,key:newkey:value

我尝试这样做,dict1['item1']['category1']但这正在添加一个新的键值对。

Dan*_*ejo 5

用于就地修改现有字典dict1

for key, value in dict1.items():
    dict1[key] = { "category" : value }

print(dict1)
Run Code Online (Sandbox Code Playgroud)

输出

{'item1': {'category': {'result': [{'val': 228, 'no': 202}]}}, 'item2': {'category': {'result': [{'value': 148, 'year': 201}]}}}
Run Code Online (Sandbox Code Playgroud)

作为替代用途update

dict1.update((k, {"category": v}) for k, v in dict1.items())
Run Code Online (Sandbox Code Playgroud)

请注意,update从文档中接收字典或可迭代的键/值对:

update() 接受另一个字典对象或键/值对的可迭代对象(作为元组或长度为 2 的其他可迭代对象)。

最后在Python 3.9+中,您可以使用合并运算符( |=),如下所示:

dict1 |= ((k, {"category": v}) for k, v in dict1.items())
Run Code Online (Sandbox Code Playgroud)