使用unicode键和值

时间:2015-07-02 00:52:18

标签: python json list dictionary unicode

我是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值还是别的。

1 个答案:

答案 0 :(得分:1)

目前的情况(基于方括号)是您有一个词典列表的列表。此时你必须迭代这样的东西:

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

我认为你可能会忽略这样一个事实,即字典再次嵌套在列表中,这就是为什么它会抛出列表索引的错误。