2015-05-04 61 views
0

我想迭代通過JSON響應獲取響應中的每個數組元素的元素,並將它們添加到新的JSON對象。我正在進行多個調用,以獲得新的json響應,但也可能會返回先前調用的相同ID。我想遍歷所有的呼叫,並有一個唯一的ID結束的列表。迭代通過JSON對象添加到Python的新列表的唯一值

例如JSON響應

[{"firstName" : "John", 
    "lastName" : "Doe", 
    "id:"  : "123542" 
    }, 
    {"firstName" : "Jane", 
    "lastName" : "Doe", 
    "id:"  : "123" 
    }, 
    {"firstName" : "Harry", 
    "lastName" : "dude", 
    "id:"  : "653" 
    } 
] 

我有什麼權利,但現在不會刪除複本。它只是增加每一個

new_members = [] 
for team in teams 
    if team["name"] == "example": 
     members = call_to_get_members.json() 

     for member in members: 
      new_member = {"firstName": member["firstName"], "lastName": member["lastName"]} 
      if member not in new_members: 
       new_members.append(new_member) 
       break 
+0

如果你只想要一個發生,爲什麼不使用套? – Karl

+0

@Karl'字典不可散列,所以不能放在一個集合中。 OP將需要使用元組。 – kdopen

+0

@kdopen來自json的用戶數據非常易散,比如他似乎指出的id字段是一個獨特的字段。 – Karl

回答

1

我相信你在這行一個錯字:

new_member = {"firstName": member["firstName"] + "lastName": member["lastName"]} 

+應該是一個逗號。

它是增加每個條目的原因就在於此if聲明

if member not in new_members: 

我相信你想

if new_member not in new_members: 

沒有看到的call_to_get_members.json()輸出,我必須承擔它返回一個列表dict s,每個成員包含名字,姓氏,和用戶ID。因此,member將永不匹配new_members中的任何內容,因爲該列表中的dict沒有id字段。

這會導致每次發生追加。

+0

這樣做,謝謝。是的,這是+是一個錯字。 –