Py学习  »  Python

使用python有条件地解析json

John • 2 年前 • 502 次点击  
{
  "info": [
    {
      "subinfo": {
        "name": "ABC",
        "age": 23,
        "sex": "M",
        "addr": "xyz",
        "regDt": "01-Jan-2021"
      },
      "city": "NY",
      "eduInfo": {
        "deg": "BA",
        "master": "PhD"
      },
      "sports": {
        "indoor": "poker",
        "outdoor": "hockey"
      }
    },
    {
      "subinfo": {
        "name": "PQR",
        "age": 23,
        "sex": "F",
        "addr": "def",
        "regDt": "01-Jan-2021"
      },
      "city": "NY",
      "eduInfo": {
        "deg": "BA",
        "master": "NA"
      },
      "sports": {
        "indoor": "poker",
        "outdoor": "hockey"
      }
    }
  ]
}

以上数据是我正在处理的数据类型的一个简单示例。有 这样的 成百上千 属于 info's 基本上是男性和女性。我需要两个单独的列表,男性和女性。因此,提取男性的数据,即:; sex="M" ,我正在使用这个条件

data = json.loads(data)

for m in data['info'] :
    if m['subinfo']['sex'] == "M" :
            mList = m

print(mList)

#and for Females list

for f in data['info'] :
    if f['subinfo']['sex'] == "F" :
            fList = f

print(fList)

我预计男性和女性各有一个以上的记录,但实际结果是 每个人只有一个。这个代码怎么了?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129425
 
502 次点击  
文章 [ 1 ]  |  最新文章 2 年前
Ouroborus
Reply   •   1 楼
Ouroborus    2 年前

每次都将变量设置为对象。因此,变量将是最后一个匹配的对象。相反,将变量设置为空列表,然后将对象附加到该列表中。

mList = []
for m in data['info']:
    if m['subinfo']['sex'] == 'M':
         mList.append(m)