2015-07-02 38 views
2

我是Python和JSON的新手。我有一個(我相信是)字典的列表,這些字典是由對API的多個響應組成的。更具體地說,我遍歷圖像鏈接列表,將它們逐個發送給處理它們的API,並將結果存儲在列表中。使用unicode鍵和值對嵌套字典列表進行迭代

下面是一個詞典列表的示例。

[[{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

這看起來像什麼(基於方括號)是你有一個詞典列表的列表。在這一點上,你將不得不遍歷soemthing,如:

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

我想你可能忽視了的字典嵌套在列表再次,這就是爲什麼它拋出關於列表索引錯誤的情況。

+0

這工作完美。我不確定自己出錯的地方,但這對我來說很合理。非常感謝您花時間回答我的問題。 –

+0

太棒了!希望你把這個問題標記爲回答:) –