python多維list去重

2021-09-02 22:12:27 字數 535 閱讀 9969

一維的list去重可以用set(list),但是二維的list轉set就會報錯 unhashable type: 『list』

原因是set傳進來的是不可雜湊的變數

python中那麼哪些是可雜湊元素?哪些是不可雜湊元素?

可雜湊的元素有:int、float、str、tuple

不可雜湊的元素有:list、set、dict

為什麼 list 是不可雜湊的,而 tuple 是可雜湊的

(1)因為 list 是可變的在它的生命期內,你可以在任意時間改變其內的元素值。

(2)所謂元素可不可雜湊,意味著是否使用 hash 進行索引

(3)list 不使用 hash 進行元素的索引,自然它對儲存的元素有可雜湊的要求;而 set 使用 hash 值進行索引

正確做法:將list轉成tuple,這樣就可以用set去重。

dic = list(set([tuple(t) for t in dic]))

dic = [list(v) for v in dic]

Python 列表list去重

一.fromkeys list keys list2 fromkeys list1 keys 二.set list2 list set list1 三.itertools.grouby ids 1,4,3,3,4,2,3,4,5,6,1 ids.sort it itertools groupby i...

多維陣列去重

假如有這樣乙個陣列,要求找出陣列兩兩之間name相同的元素,並標記其所在陣列的索引。var arr 開始想到的笨方法就是陣列兩兩遍歷,但當資料量大的時候,這種方法的效率是極其低的,於是思考,如何能在遍歷一次的情況下,實現這個功能。var obj arr.foreach arr1,index else...

多維vector去重

1 先sort,然後才可能做unique 2 unique完了之後,iterator指向最後乙個元素之後,於是erase從此處至end 即可。這裡比較神奇的是sort和unique可以直接比較2個一維 vector的大小。具體 如下 include include include using nam...