访问字典列表复杂数据

时间:2017-08-09 20:07:12

标签: python python-3.x dictionary

我试图操纵我从使用.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'它位于列表中的每个字典元素中。

2 个答案:

答案 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'}}]