迭代具有unicode键和值的嵌套字典列表

2024-04-20 15:41:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python和JSON都是新手。我有一个由对一个API的多个响应组成的字典列表(我相信是)。更具体地说,我遍历一个指向图像的链接列表,将它们逐个发送到处理它们的API,并将结果存储在一个列表中。在

下面是字典列表的一个示例。在

[[{u'attribute': {u'age': {u'range': 7, u'value': 21},
    u'gender': {u'confidence': 70.0191, u'value': u'Male'},
    u'glass': {u'confidence': 99.7953, u'value': u'None'},
    u'race': {u'confidence': 99.7875, u'value': u'White'},
    u'smiling': {u'value': 0.373321}},
   u'face_id': u'3709f4b7c37451bece7d031165301358',
   u'position': {u'center': {u'x': 45.333333, u'y': 49.851632},
    u'eye_left': {u'x': 44.417833, u'y': 48.420178},
    u'eye_right': {u'x': 45.882167, u'y': 48.280712},
    u'height': 7.121662,
    u'mouth_left': {u'x': 44.614333, u'y': 51.60089},
    u'mouth_right': {u'x': 45.693667, u'y': 51.402077},
    u'nose': {u'x': 44.954, u'y': 49.712166},
    u'width': 4.0},
   u'tag': u''}],
 [{u'attribute': {u'age': {u'range': 7, u'value': 42},
    u'gender': {u'confidence': 97.1968, u'value': u'Male'},
    u'glass': {u'confidence': 65.9269, u'value': u'None'},
    u'race': {u'confidence': 99.7245, u'value': u'White'},
    u'smiling': {u'value': 23.752}},
   u'face_id': u'809311726519d7396632edd2ad5b3511',
   u'position': {u'center': {u'x': 28.375, u'y': 56.666667},
    u'eye_left': {u'x': 19.411575, u'y': 44.480889},
    u'eye_right': {u'x': 35.815, u'y': 41.542311},
    u'height': 63.555556,
    u'mouth_left': {u'x': 20.52055, u'y': 74.964889},
    u'mouth_right': {u'x': 35.7015, u'y': 74.159111},
    u'nose': {u'x': 26.885, u'y': 60.064444},
    u'width': 35.75},
   u'tag': u''}]

我需要做的是遍历这个列表,从'attributes'键中提取值。例如,计算gender:values:male的数量。在

我的问题是访问嵌套字典。不管我怎么做,我得到的错误要么与unicode对象有关,要么与列表索引必须是整数而不是str

我如何在字典列表中迭代并获得性别值?在

任何帮助都将不胜感激。我花了好几个小时来尝试这样做,但不确定问题是unicode值还是其他什么问题。在


Tags: rightapi列表age字典valuerangeattribute
1条回答
网友
1楼 · 发布于 2024-04-20 15:41:36

当前的情况(基于方括号)是一个字典列表列表。此时,您必须迭代soemthing,如下所示:

for dictList in list:
     for dict in dictList:
         *do something with dict, eg* if dict['gender']['value']=='Male':
                      maleCounter += 1

我认为您可能忽略了这样一个事实,即字典再次嵌套在列表中,这就是它抛出关于列表索引的错误的原因。在

相关问题 更多 >