我從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的(有點笨拙的)匿名函數語法。儘管如此,對於過濾/映射,經常列表理解(和相關構造,例如'詞典'理解,'集合'理解甚至生成器表達式)被認爲更習慣。 –