如何在Python字典中为每个项插入新键并嵌套原有值?
问题
现有如下字典:
dict1={ 'item1': {'result': [{'val': 228, 'no': 202}] }, 'item2': {'result': [{'value': 148, 'year': 201}] } }
需要为每个item插入新键category,将原结构键:值转换为键:新键:值,最终输出如下:
output={ 'item1': {'category': {'result': [{'val': 228, 'no': 202}] } }, 'item2': {'category': {'result': [{'value': 148, 'year': 201}] } } }
尝试过dict1['item1']['category1']的方式,但只是添加了新键值对,未达到预期效果。
解决方案
你需要把每个item对应的原有值,重新包装成一个以category为键的新字典,再赋值给原item键。这里提供两种可行方法:
方法一:直接修改原字典
遍历原字典的所有键,将每个键对应的原有值替换为包含category的新字典:
for key in dict1: original_value = dict1[key] dict1[key] = {'category': original_value}
执行这段代码后,dict1就会变成你需要的结构。
方法二:生成新字典(保留原字典)
如果不想改动原字典,可以用字典推导式快速生成目标结构的新字典:
output = {key: {'category': value} for key, value in dict1.items()}
这个推导式会遍历原字典的每一组键值对,把值包装进{'category': value}后,作为新字典对应键的值。
你之前的操作dict1['item1']['category1']是在原item的子字典里新增键值对,而不是把整个子字典作为category的值,所以无法得到预期的嵌套结构。
内容的提问来源于stack exchange,提问作者harry
相关产品推荐
相关产品推荐

