2016-05-31 84 views
0

嗨,伙计们,我想问问题,但我想知道是什么过程,以从下面的json输出中删除'name'值,我知道如何获取单个名称索引name = [groups['groups'][0]['name'] for groups in result]但我如何得到这两个名字从json输出中提取多个字段

from pyzabbix import ZabbixAPI 

import json 

z = ZabbixAPI(url='https://zabbix.server,user='xxxx',password='xxxx') 
result = z.host.get(output='groupid',selectGroups='extend', filter={'host' : 'mailpphfprd01'}) 


name = [groups['groups'] for groups in result] 

name 

JSON输出:

[[{u'flags': u'0', 
    u'groupid': u'110', 
    u'internal': u'0', 
    u'name': u'- GSOC - Systems'}, 
    {u'flags': u'0', 
    u'groupid': u'313', 
    u'internal': u'0', 
    u'name': u'Applications - Email Digest'}]] 

需要的输出

[u'- GSOC - Systems' u'Applications - Email Digest'] 

回答

1

你应该能够做到这一点的一个list-comprehension

json_output = [ 
    [ 
    { 
     "internal": "0", 
     "flags": "0", 
     "groupid": "110", 
     "name": "- GSOC - Systems" 
    }, 
    { 
     "internal": "0", 
     "flags": "0", 
     "groupid": "313", 
     "name": "Applications - Email Digest" 
    } 
    ] 
] 

names = [d['name'] for d in json_output[0]] 

print(names) # -> [u'- GSOC - Systems', u'Applications - Email Digest'] 
+0

'json_output [0]'为什么放在这里的指数是代表内部[] – ryans11

+0

JSON的输出列表列表字典,所以我只是硬编码外部列表中第一个条目的索引 - 换句话说,'json_output [0]'是该最外层列表的第一个(也是唯一)条目。 – martineau