我有包含嵌套的字典詞典列表,像這樣:如何從Python中的列表中刪除重複的字典(使用嵌套字典)?
v0 = [ { 'a': 1, 'b': { 'c': 3 } },
{ 'a': 1, 'b': { 'c': 3 }, 'd': 4 },
{ 'a': 1 },
{ 'a': 1, 'b': { 'c': 3 } } ]
如何刪除重複的列表元素,就像一個結果:
v1 = [ { 'a': 1, 'b': { 'c': 3 } },
{ 'a': 1, 'b': { 'c': 3 }, 'd': 4 },
{ 'a': 1 } ]
我不關心順序,我只想要所有元素的集合。我見過很多類似的問題,但答案僅適用於列表中的簡單字典,而不是嵌套字典。例如:
v1 = [dict(t) for t in set([tuple(d.items()) for d in v0])]
如果詞典不嵌套這會工作,而是因爲他們,我得到的錯誤「類型錯誤:unhashable類型:‘字典’」
重要的是要注意,這是O(n^2),而更有效的解決方案可以實現O(n)。 – univerio
我最終使用這個。幸運的是,我的列表足夠小,以至於perf的命中並不重要,我覺得這是非常可讀的。 –
@univerio:這是一個O(n^2)解決方案? v'中的v是O(n),'如果v不在out'中是O(1)。 –