0

我正在编写我的第一个 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 函数对该列表进行排序。我意识到我可以对列表进行排序,然后迭代并删除重复项。我认为必须有一个更优雅的解决方案。

谢谢!

4

2 回答 2

0

用户名是唯一的,对吧?

它必须是一个list吗?似乎一个简单的解决方案是将其改为 a dictof dicts 。使用用户名作为键,只会出现最新版本。

如果必须对值进行排序,则OrderedDict可以查看一种类型:http: //docs.python.org/2/library/collections.html#collections.OrderedDict

于 2013-10-27T03:49:24.880 回答
0

假设这是你得到的,

JSON = [
        {

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

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

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

将此 dict 列表转换为 dict 的 dict 将删除重复项,如下所示:

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

r你将只能找到一个 Fred 和 peter 的记录。

于 2013-10-27T05:30:08.067 回答