我正在编写我的第一个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函数对这个列表进行排序。我意识到我可以对列表进行排序,然后迭代和删除重复项。我在想,必须有一个更优雅的解决方案。
谢谢!
必须多次调用RESTful接口才能获取所有用户,因此用户名在组合列表中不是唯一的。现在,我使用自定义排序函数对列表进行排序,然后通过列表反向迭代,删除重复项。似乎会有一个更简单的解决方案。 – bschulz
我并不是说用户名在列表中是唯一的;我的意思是我期望每个用户名只对应一个用户(所以你不必担心'dict'中的冲突条目)。安东尼孔张贴我正在得到的;我发布的链接仅在用户名的顺序很重要时才有用,但我认为它可能不会。 –
啊 - 搞错了。是的 - 你是对的。关于排序顺序,我将字典转换回列表,然后使用带lambda函数的sort()方法...比我手动重复检测更快,更简单,更优雅。非常感谢您指点我正确的道路! – bschulz