在python中打印嵌套的json输出

时间:2017-04-11 10:10:55

标签: python json

我使用以下格式的json文件

{
"project1": {
    "alias1": {
      "command":"somecommand for alias1"
    }
  },
"project2": {
    "alias2": {
      "command":"somecommand for alias2"
    },
    "alias3": {
      "command":"somecommand for alias3"
    }
 }

我想提取数据并以下列格式将输出打印为Dict

{
'alias1':'command', # Command for alias1
'alias2':'command', # Command for alias2
'alias3':'command'  # Command for alias3
}

如何在python2中实现这一目标?

4 个答案:

答案 0 :(得分:1)

首先,您的源JSON中存在错误,需要关闭"}"

在修复之后,您可以使用json.loads将其转换为Python变量,然后使用Python循环和条件运行它以提取您想要的内容。像

这样的东西
ss = json.loads( """ # JSON source as above
                     # etc
    """)
res = {}
for proj,v in ss.items():
    for alias,d in v.items():
        if alias.startswith("alias"):
            res[alias] = d["command"]

res是您想要的字典,您可以使用json.dumps和(可能)indent=0sort_keys=True

打印它

答案 1 :(得分:0)

不确定这是否是您要找的:

result = {value:v for key in a for value in a[key] for item in a[key][value] for k,v in a[key][value].items()}

{'alias2': 'somecommand for alias2',
'alias3': 'somecommand for alias3',
'alias1': 'somecommand for alias1'}

答案 2 :(得分:0)

你可以这样尝试

def dict_parse(dict):
     dict_new = {}
     keys = dict.keys()
     for k in keys:
          key_new = dict[k].keys()
          for i in key_new:
               dict_new[i] = dict[k][i]
     return dict_new

输出将是:

 {'alias1': {'command': 'somecommand for alias1'},
 'alias2': {'command': 'somecommand for alias2'},
 'alias3': {'command': 'somecommand for alias3'}}

我认为你应该根据这个尝试这个,你可以得到你的确切输出

答案 3 :(得分:0)

你可以用这个

print({i:j['command'] for k,v in df.items() for i,j in v.items() if i.startswith('alias')})