我从JSON形式产生这样的字典几个milions的名单:Python - 从复杂对象的有序列表中删除重复项?
{
"_id":XXX,
"some_other":"fields",
...
}
列表必须是安全的排序由_id
关键但也有与重复_id
disctionaries。与列表大小(最多大约10-100)相比,实际上很少有重复项。我只想为每个重复的_id
只取第一个(或最后一个,只要它是确定性的)字典。在JavaScript中我会使用下列内容:
list.sort((a,b)=>a._id>b._id?1:(a._id<b._id?-1:0))
.filter((ent,i,arr)=>i==0||ent!=arr[i-1])
但是我想过滤的蟒蛇变种不允许访问项目的索引?在Python中有没有类似的简短方法来完成这样的事情?我发现sorted(...)
函数允许我以我想要的方式对这个列表进行排序,但是我仍然不知道如何滤除以下重复项(没有明显的,粗暴的for循环)。
你看着'sorted'和'filter'?Python有'map','filter'和'reduce'结构,你可以使用'lambda args:'来编写一个等效的表达式,它使用Python的(有点笨拙的)匿名函数语法。尽管如此,对于过滤/映射,经常列表理解(和相关构造,例如'词典'理解,'集合'理解甚至生成器表达式)被认为更习惯。 –