2015-11-22 98 views
1

一直在桌子上敲我的头! 我有一个在json中下载的url,然后parsed_json = json.loads(response_body)到python字典。问题是,需要的数据(嵌入在字典中)是名为列表的字典。如果我做了一个字典计数或关键字或其他任何事情,只要有37个字典,我就可以得到第一个3的等级。python在列表中获取字典值

for key, value in parsed_json.iteritems() : 
    print key, value 

一个星期,我无法弄清楚如何从列表类型的字典获取所有值后,我可以通过这样的事情得到一个,但我不能增加计数。

print parsed_json['list'][(1)]['value'] 

这是一个价格Digi的XBee云获得,得到的值后存在需要一些数学上的一些做,因为结果是MV的不是C度。 任何方向获得值非常感激。

摘录的数据:

{u'count': 37, 
u'list': [{u'history_uri': u'/ws/v1/streams/history/00000000-00000000-00409DFF-FF818A13/management/connections', 
      u'id': u'00000000-00000000-00409DFF-FF818A13/management/connections', 
      u'server_timestamp': u'2015-11-21T04:21:45.407Z', 
      u'timestamp': u'2015-11-21T04:21:45.269Z', 
      u'type': u'JSON', 
      u'value': u'{"connectTime":"2015-11-21T04:21:45.269Z","type":"Ethernet","remoteIp":"72.38.16.255","localIp":"192.168.2.106","session":"17c6e5d2-3d9d-439b-aa8a-36f050bf8b9c"}'}, 
      {u'history_uri': u'/ws/v1/streams/history/00000000-00000000-00409DFF-FF818A13/xbee.analog/[00:13:A2:00:40:D5:8F:0A]!/AD1', 
      u'id': u'00000000-00000000-00409DFF-FF818A13/xbee.analog/[00:13:A2:00:40:D5:8F:0A]!/AD1', 
      u'server_timestamp': u'2015-11-22T08:14:15.945Z', 
      u'timestamp': u'2015-11-22T08:14:09.101Z', 
      u'type': u'INTEGER', 
      u'value': u'1'}, 
      {u'history_uri': u'/ws/v1/streams/history/00000000-00000000-00409DFF-FF818A13/xbee.analog/[00:13:A2:00:40:D5:8F:0A]!/AD2', 
      u'id': u'00000000-00000000-00409DFF-FF818A13/xbee.analog/[00:13:A2:00:40:D5:8F:0A]!/AD2', 
      u'server_timestamp': u'2015-11-22T08:14:15.964Z', 
      u'timestamp': u'2015-11-22T08:14:09.377Z', 
      u'type': u'INTEGER', 
      u'value': u'613'}, 
      {u'history_uri': u'/ws/v1/streams/history/00000000-00000000-00409DFF-FF818A13/xbee.analog/[00:13:A2:00:40:D5:8F:0A]!/AD3', 
      u'id': u'00000000-00000000-00409DFF-FF818A13/xbee.analog/[00:13:A2:00:40:D5:8F:0A]!/AD3', 
      u'server_timestamp': u'2015-11-22T08:14:15.930Z', 
      u'timestamp': u'2015-11-22T08:14:08.854Z', 
      u'type': u'INTEGER', 
      u'value': u'852'}, 
      {u'history_uri': u'/ws/v1/streams/history/00000000-00000000-00409DFF-FF818A13/xbee.analog/[00:13:A2:00:40:D5:8F:50]!/AD1', 
      u'id': u'00000000-00000000-00409DFF-FF818A13/xbee.analog/[00:13:A2:00:40:D5:8F:50]!/AD1', 
      u'server_timestamp': u'2015-11-22T08:14:15.834Z', 
      u'timestamp': u'2015-11-22T08:14:07.477Z', 
      u'type': u'INTEGER', 
      u'value': u'0'}, 
      {u'history_uri': u'/ws/v1/streams/history/00000000-00000000-00409DFF-FF818A13/xbee.analog/[00:13:A2:00:40:D5:8F:50]!/AD2', 

回答

0

这应该工作:

for index in range(parsed_json['count']): 
    print(parsed_json['list'][index]['value']) 

或者简单:

for item in parsed_json['list']: 
    print(item['value']) 

可以打印所有键值对迭代items()

for entry in parsed_json['list']: 
    for key, value in entry.items(): 
     print(key) 
     print(' ', value) 

在Python 2中编写print ' ', value,因为print是Python 3中的一个函数,但仍然是Python 2中的一个语句。如果您不熟悉Python,请从Python 3开始。Python 2是传统Python。

+0

谢谢 不确定第二个更容易,因为他们都只是两条线,但它更干净。他们都工作!现在如何使用一个打印语句获得多个数据值“字段”?我到目前为止所尝试的一切都没有奏效,但我对Python非常陌生。在20年以上没有编写任何代码。 –

+0

找出多个值,不知道是否最好的方法,但它的工作原理。 print(item ['timestamp']),(item ['id']),(item ['value']) –

+0

您可以遍历每个列表条目中的所有字典项目。我添加了一个例子。 –

0

如果我理解正确的话,你只想一个列表,在该类型的字典中的所有值。如果你的意思是别的东西,让我知道这样我就可以给你另外一个答案:

lst = [] 
for dict in parsed_json: 
    for key in dict: 
     lst.append(dict[key])