簡體   English   中英

從嵌套詞典列表中刪除重復項

[英]Remove duplicates from a list of nested dictionaries

我正在編寫我的第一個python程序,以使用他們的RESTful API管理Atlassian On Demand中的用戶。 我調用users / search?username = API來檢索用戶列表,該列表返回JSON。 結果是一列復雜的字典類型,看起來像這樣:

[
        {
            "self": "http://www.example.com/jira/rest/api/2/user?username=fred",
            "name": "fred",
            "avatarUrls": {
                "24x24": "http://www.example.com/jira/secure/useravatar?size=small&ownerId=fred",
                "16x16": "http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=fred",
                "32x32": "http://www.example.com/jira/secure/useravatar?size=medium&ownerId=fred",
                "48x48": "http://www.example.com/jira/secure/useravatar?size=large&ownerId=fred"
            },
            "displayName": "Fred F. User",
            "active": false
        },
        {
            "self": "http://www.example.com/jira/rest/api/2/user?username=andrew",
            "name": "andrew",
            "avatarUrls": {
                "24x24": "http://www.example.com/jira/secure/useravatar?size=small&ownerId=andrew",
                "16x16": "http://www.example.com/jira/secure/useravatar?size=xsmall&ownerId=andrew",
                "32x32": "http://www.example.com/jira/secure/useravatar?size=medium&ownerId=andrew",
                "48x48": "http://www.example.com/jira/secure/useravatar?size=large&ownerId=andrew"
            },
            "displayName": "Andrew Anderson",
            "active": false
        }
    ]

我多次打電話給我,結果得到了重復的人。 我一直在搜索和閱讀,但無法弄清楚如何對該列表進行重復數據刪除。 我想出了如何使用lambda函數對該列表進行排序。 我意識到我可以對列表進行排序,然后迭代並刪除重復項。 我認為必須有一個更優雅的解決方案。

謝謝!

用戶名是唯一的,對嗎?

它一定是list嗎? 似乎是一個簡單的解決辦法是使它成為一個dictdict !而非。 使用用戶名作為密鑰,將僅顯示最新版本。

如果必須對值進行排序,則可以查看一個OrderedDict類型: http : //docs.python.org/2/library/collections.html#collections.OrderedDict

可以說這就是你得到的,

JSON = [
        {

            "name": "fred",
...
},
        {

            "name": "peter",
...
},
        {

            "name": "fred",
...
},

將此字典列表轉換為字典,將刪除重復的字典,如下所示:

r = dict([(user['name'], user) for user in JSON])

r您只會找到fred和peter的一個記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM