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)),把鍵值對再對調回來