python在列表

时间:2015-11-22 21:20:34

标签: python list dictionary

一直在桌子上敲我的头! 我有一个在json中下载的url,然后是parsed_json = json.loads(response_body)到python dictionary。问题是需要的数据(嵌入在dicts列表中)位于名为list的字典中。如果我做了一个dict计数或键或其他任何东西,那么当实际有37个dicts时,我只得到第一个3级。

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

一周之后我无法弄清楚如何从列表中的dicts获取所有值,我可以通过使用类似的东西得到一个,但我不能增加计数。

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

这是一个数字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',

2 个答案:

答案 0 :(得分:1)

这应该有效:

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

答案 1 :(得分:0)

如果我理解正确,你只需要一个包含所有值的列表。如果您的意思是别的,请告诉我,我可以给您另一个答案:

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