我是一个新手,在谈到决定时似乎非常困难,特别是当他们似乎与另一个带有一系列词典的词典嵌套时。
我认为这就是我在这里处理的问题。
>>> print data
{u'service_group_stat':
{u'status': 3, u'protocol': 2, u'name': u'SG_ACCOUNT.BUSINESS.COM_443', u'cur_reqs': 0, u'resp_pkts': 4349047684, u'cur_conns': 71, u'total_reqs': 0, u'total_reqs_succ': 0, u'req_pkts': 1808605274, u'req_bytes': 285168980113,
u'member_stat_list':
[{u'status': 1, u'resp_bytes': 10134966691, u'cur_reqs': 0, u'resp_pkts': 7834233, u'cur_conns': 11, u'total_reqs': 0, u'server': u'WWW0006', u'req_pkts': 3134918, u'req_bytes': 447460215, u'total_reqs_succ': 0, u'tot_conns': 52311, u'port': 81},
{u'status': 1, u'resp_bytes': 12396718148, u'cur_reqs': 0, u'resp_pkts': 9572363, u'cur_conns': 5, u'total_reqs': 0, u'server': u'WWW0005', u'req_pkts': 3870142, u'req_bytes': 548725475, u'total_reqs_succ': 0, u'tot_conns': 61464, u'port': 81},
{u'status': 1, u'resp_bytes': 15868605964, u'cur_reqs': 0, u'resp_pkts': 12282023, u'cur_conns': 15, u'total_reqs': 0, u'server': u'WWW0004', u'req_pkts': 5051483, u'req_bytes': 711362272, u'total_reqs_succ': 0, u'tot_conns': 80898, u'port': 81},
{u'status': 1, u'resp_bytes': 1832290858664, u'cur_reqs': 0, u'resp_pkts': 1417192127, u'cur_conns': 23, u'total_reqs': 0, u'server': u'WWW0003', u'req_pkts': 575717964, u'req_bytes': 92624447982, u'total_reqs_succ': 0, u'tot_conns': 7265009, u'port': 81},
{u'status': 1, u'resp_bytes': 1909851841929, u'cur_reqs': 0, u'resp_pkts': 1479318756, u'cur_conns': 14, u'total_reqs': 0, u'server': u'WWW0002', u'req_pkts': 634692796, u'req_bytes': 97240370978, u'total_reqs_succ': 0, u'tot_conns': 7130096, u'port': 81},
{u'status': 1, u'resp_bytes': 1839297678302, u'cur_reqs': 0, u'resp_pkts': 1422848182, u'cur_conns': 3, u'total_reqs': 0, u'server': u'WWW0001', u'req_pkts': 586137971, u'req_bytes': 93596613191, u'total_reqs_succ': 0, u'tot_conns': 7172117, u'port': 81}],
u'resp_bytes': 5619840669698, u'tot_conns': 21761895}}
在我看来,“数据”是一个包含另一个dict的字典,其中包含多个dicts的列表?
我似乎能够完成基础知识并提取与“service_group_stat”相关的第一级数据,然后关联变量,例如:
>>> sgname = data['service_group_stat']['name']
>>> sgconnects = data['service_group_stat']['cur_conns']
>>> print sgname
SG_ACCOUNT.BUSINESS.COM_443
>>> print sgconnects
71
我没有弄清楚如何更深入地解决这个问题。
如何进入服务器级别并将数据关联到各个服务器。
最终能够呈现组数据以及服务器数据,例如:
Service Group: SG_ACCOUNT.BUSINESS.COM_443 Total SG Connections: 71
Server: WWW0001 Server Connections: 3
Server: WWW0002 Server Connections: 14
Server: WWW0003 Server Connections: 23
Server: WWW0004 Server Connections: 15
Server: WWW0005 Server Connections: 5
Server: WWW0006 Server Connections: 11
有关如何最好地将数据分组并将数据与变量相关联的任何建议,然后我可以使用这些变量来显示或打印我认为合适的变量?
答案 0 :(得分:2)
要在数据结构中进一步访问数据,您可以继续使用括号。因此,举例来说,让我们说您想要访问第一个'成员的状态。你可以这样做:
value = data['service_group_stat']['member_stat_list'][0]['status']
这是做什么的 - 它访问与密钥service_group_stat相关联的值,这恰好是一个字典。然后,它访问嵌套字典中的值,该字典恰好是一个列表。要从列表中获取,请使用索引(数字)。基本上,您可以根据数据结构的深度进一步堆叠括号。
答案 1 :(得分:2)
以data
使用pprint
精确打印:
{'service_group_stat': {'cur_conns': 71,
'cur_reqs': 0,
'member_stat_list': [{'cur_conns': 11,
'cur_reqs': 0,
'port': 81,
'req_bytes': 447460215,
'req_pkts': 3134918,
'resp_bytes': 10134966691,
'resp_pkts': 7834233,
'server': 'WWW0006',
'status': 1,
'tot_conns': 52311,
'total_reqs': 0,
'total_reqs_succ': 0},
{'cur_conns': 5,
'cur_reqs': 0,
'port': 81,
'req_bytes': 548725475,
'req_pkts': 3870142,
'resp_bytes': 12396718148,
'resp_pkts': 9572363,
'server': 'WWW0005',
'status': 1,
'tot_conns': 61464,
'total_reqs': 0,
'total_reqs_succ': 0},
{'cur_conns': 15,
'cur_reqs': 0,
'port': 81,
'req_bytes': 711362272,
'req_pkts': 5051483,
'resp_bytes': 15868605964,
'resp_pkts': 12282023,
'server': 'WWW0004',
'status': 1,
'tot_conns': 80898,
'total_reqs': 0,
'total_reqs_succ': 0},
{'cur_conns': 23,
'cur_reqs': 0,
'port': 81,
'req_bytes': 92624447982,
'req_pkts': 575717964,
'resp_bytes': 1832290858664,
'resp_pkts': 1417192127,
'server': 'WWW0003',
'status': 1,
'tot_conns': 7265009,
'total_reqs': 0,
'total_reqs_succ': 0},
{'cur_conns': 14,
'cur_reqs': 0,
'port': 81,
'req_bytes': 97240370978,
'req_pkts': 634692796,
'resp_bytes': 1909851841929,
'resp_pkts': 1479318756,
'server': 'WWW0002',
'status': 1,
'tot_conns': 7130096,
'total_reqs': 0,
'total_reqs_succ': 0},
{'cur_conns': 3,
'cur_reqs': 0,
'port': 81,
'req_bytes': 93596613191,
'req_pkts': 586137971,
'resp_bytes': 1839297678302,
'resp_pkts': 1422848182,
'server': 'WWW0001',
'status': 1,
'tot_conns': 7172117,
'total_reqs': 0,
'total_reqs_succ': 0}],
'name': 'SG_ACCOUNT.BUSINESS.COM_443',
'protocol': 2,
'req_bytes': 285168980113,
'req_pkts': 1808605274,
'resp_bytes': 5619840669698,
'resp_pkts': 4349047684,
'status': 3,
'tot_conns': 21761895,
'total_reqs': 0,
'total_reqs_succ': 0}}
使用此信息,我们现在可以处理它。
对于member_stat_list
中的每个服务器,我们可以按您所说的格式打印数据:
for server in data["service_group_stat"][["member_stat_list"]:
print("Server:".ljust(20," ")+server["server"].ljust(32," ")+"Server Connections:".ljust(24," ")+str(server["cur_conns"]))