我试图操纵我从使用.json()
转换的API响应中获得的数据:
{
'key1':'val1',
'key2':'val2',
'value':[
{'K1':'V1',
'K2':'V2',
'K3':'V3'},
{'K11':'V11',
'K12':'V12',
'K13':'V13'},
]
}
我想构建一个字典列表,如下所示:
[{V2:{K1:V1, K3:V3}}, {V12:{K11:V11, K13:V13}}]
编辑:我根据各自的键确定V2或V12。关键是' displayName'它位于列表中的每个字典元素中。
答案 0 :(得分:0)
如果外键('K2'
和'K12'
)预先固定,则可以像在列表推导中使用条件字典理解一样简单( cough ):
>>> [{subdict[op]:
... {key: value for key, value in subdict.items() if key != op}}
... for op, subdict in zip(['K2', 'K12'], dct['value'])]
[{'V2': {'K1': 'V1', 'K3': 'V3'}}, {'V12': {'K11': 'V11', 'K13': 'V13'}}]
假设您的字典存储在名为dct
的变量中。
答案 1 :(得分:0)
不确定如何确定密钥,但是:
output = []
for sub_dict in d.get('value'):
# assuming its always the middle element?
nk = sub_dict.keys()[len(sub_dict.keys()) / 2]
output.append({nk : {k:v for k,v in sub_dict.items() if k != nk}})
[{'K2': {'K1': 'V1', 'K3': 'V3'}}, {'K12': {'K11': 'V11', 'K13': 'V13'}}]