【问题标题】:Retrieving items from a dictionary data type created from a JSON request从 JSON 请求创建的字典数据类型中检索项目
【发布时间】:2014-05-26 07:27:21
【问题描述】:

我已经尝试了所有我能找到的方法来遍历这段代码返回的 JSON 中的成员项:

import requests,string,simplejson as json
from pprint import pprint

data=requests.get('http://localhost:8090/api/v1/members/2321')
data  = json.loads(data.text)

pprint(data)

这个pprint的结果是:

{u'members': [[{u'member_amt_pledged': u'10.00',
u'member_amt_recvd': None,
u'member_id': u'1',
u'name': u'Murray Hight'},
{u'member_amt_pledged': u'10.00',
u'member_amt_recvd': None,
u'member_id': u'4',
u'name': u'Martin Tunis'}]],
u'error': False}

我怎样才能遍历这个数据成员数据并评估和打印每一行?

【问题讨论】:

    标签: python json


    【解决方案1】:

    您代码中的data 是python dictionary。一个键值对。

    您可以使用variable[key] 格式访问字典中的项目。在你的情况下:

    data['members']
    

    打印出来

    [[{u'member_amt_pledged': u'10.00',
       u'member_amt_recvd': None,
       u'member_id': u'1',
       u'name': u'Murray Hight'},
      {u'member_amt_pledged': u'10.00',
       u'member_amt_recvd': None,
       u'member_id': u'4',
       u'name': u'Martin Tunis'}]]
    

    所以data['members'] 是一个列表的列表。以data['members'][0] 访问它的第一项。这仍然是一个列表。因此,您将其迭代为:

    for item in data['members'][0]:
        print(item)
    

    这给了你:

    {u'member_amt_recvd': None, u'member_amt_pledged': u'10.00', u'name': u'Murray Hight', u'member_id': u'1'}
    {u'member_amt_recvd': None, u'member_amt_pledged': u'10.00', u'name': u'Martin Tunis', u'member_id': u'4'}
    

    如您所见,其中每一个都是字典,因此您可以通过以下方式访问它的项目:

    for item in data['members'][0]:
        print(item['member_amt_pledged'])
        print(item['member_amt_recvd'])
        print(item['member_id'])
        print(item['name'])
    

    这给了你:

    10.00
    None
    1
    Murray Hight
    10.00
    None
    4
    Martin Tunis
    

    希望这会有所帮助。

    【讨论】:

    • 这很完美!非常感谢您非常详尽且写得很好的回复。
    【解决方案2】:

    要循环 JSON 字典的项目,您可以执行以下操作:

    for key, val in data.items():
        print key, val
    

    对于更大的数据集,您应该使用迭代器:

    for key, val in data.iteritems(): 
        print key, val
    

    More on dictionaries

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 2022-06-22
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多