我是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''}]
我需要做的是遍历此列表,从'属性'中提取值。键。例如,计算性别数量:值:男性。
我的问题是访问嵌套词典。无论我尝试什么,我都会得到与unicode对象相关的错误,或者列表索引必须是整数而不是str。
如何遍历字典列表(字典)并获取性别值?
任何帮助将不胜感激。我花了好几个小时尝试这样做,并且不确定问题是unicode值还是别的。
答案 0 :(得分:1)
目前的情况(基于方括号)是您有一个词典列表的列表。此时你必须迭代这样的东西:
for dictList in list:
for dict in dictList:
*do something with dict, eg* if dict['gender']['value']=='Male':
maleCounter += 1
我认为你可能会忽略这样一个事实,即字典再次嵌套在列表中,这就是为什么它会抛出列表索引的错误。