python 字典中 重復值去除



tuple_r_dict = lambda _dict: dict(val[::-1] for val in _dict.items()) # Python3.x tuple_r_dict(tuple_r_dict(z))




整理一下相關知識

1、lambda 匿名函數,冒號前為參數,個數可以有0個或多個,冒號右邊為返回值
   lambda [arg1 [, agr2,.....argn]] : expression

        lambda [參數1[參數2,...]]:返回值

1 f1=lambda x:x+1
2 print('f1(2):',f1(2))
3 
4 f2=lambda :'a'
5 print('f2(2):',f2())
6 
7 #輸出
8 #f1(2): 3
9 #f2(): a

 tuple_r_dict = lambda _dict: dict(val[::-1] for val in _dict.items())

這句表明創建一個匿名函數

輸入:_dict

輸出:dict(val[::-1] for val in _dict.items())

2、 dict()
    dict()生成一個字典

3、 _dict.items()

    dict.items()返回字典的(鍵,值)元組對的列表

1 dic={7:'d',9:'s',5:'a'}
2 print('dic:',dic)
3 print('dic.items():',dic.items())
4 
5 #輸出
6 #dic: {9: 's', 5: 'a', 7: 'd'}
7 #dic.items(): dict_items([(9, 's'), (5, 'a'), (7, 'd')])

4、val[::-1]

   把元組對順序對調

  (1,'A')[::-1]  => ('A',1)

  L[1,2,3,4,5][:4:2] => [1,3] #取列表中的前4個數,步長為2//第一個冒號左右兩邊代表在這個列表中的截取范圍,第二個冒號右邊代表截取范圍內每2個取一個數

總結:

生成一個匿名函數,函數返回一個字典dict(val[::-1] for val in _dict.items())

 

_dict.items()先返回原字典的(鍵,值)元組對列表

val[::-1] for val in _dict.items() 遍歷列表,把列表中的每個元組對中兩個值位置對調

dict()把列表轉變為字典

 

至此,生成的新字典的鍵為舊字典的鍵值,新鍵值為舊字典的鍵。利用字典的鍵唯一性,去除舊字典的重復鍵值。

再執行一次tuple_r_dict(tuple_r_dict(z)),把鍵值對再對調回來


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM