【问题标题】:Iterating a python object and filtering it迭代一个python对象并过滤它
【发布时间】:2023-12-09 14:27:01
【问题描述】:

我从 Web 服务获得的 JSON 表示法:

{
"students": [
    {
        "studentId": 127292,
        "studentName": "Mary"
    },
    {
        "studentId": 15555,
        "studentName": "Joe"
    }
  ]
}

我正在尝试迭代 JSON 对象并根据学生姓名获取学生 ID。

例如,如果我必须得到 'Joe' 中的 studentId,我们如何在 Python 中处理它?

try:
    req = urllib2.Request(url, headers = header)
    response = urllib2.urlopen(req)
    jsonObject = json.load(response)

except Exception as e:
    print e

【问题讨论】:

  • Python 没有“JSON 对象”之类的东西。有 JSON 表示法,还有 Python 对象。看看 Python dictlist 类型。

标签: python json python-2.7 urllib2


【解决方案1】:

我建议将您的数据重新映射到字典中,您可以在其中按姓名查找学生:

data = {
"students": [
    {
        "studentId": 127292,            
        "studentName": "Mary"            
    },
    {
        "studentId": 15555,            
        "studentName": "Joe"            
    }
  ]
}

lookup = {student["studentName"]: student["studentId"] for student in data["students"]}
id_of_joe = lookup.get("Joe", "No student named Joe")

【讨论】:

    【解决方案2】:

    您可以遍历 JSON 对象以获取每个字段中的学生 ID

    studentIds = []
    for obj in jsonObject:
        sID = obj['studentId']
        studentIds.append(sID)
    

    【讨论】:

      最近更新 更多