『Python CoolBook』數據結構和算法_字典比較&字典和集合
阿新 • • 發佈:2018-03-18
pytho 轉換 amp 重復元素 註意 鍵值 相同 values 返回
一、字典元素排序
dict.keys(),dict.values(),dict.items()
結合max、min、sorted、zip進行排序是個很好的辦法,另外註意不使用zip時,字典的lambda操作方法:
price = { ‘a‘:1, ‘b‘:2, ‘c‘:3 } # 多個鍵的值相同時會采取元組比較的形式,實際應用時註意 min_p = min(zip(price.values(), price.keys())) max_p = max(zip(price.values(), price.keys())) print(min_p, max_p) # (1, ‘a‘) (3, ‘c‘) # 字典被處理時會被處理key,不使用zip時比較難以理解 max(price, key=lambda k:price[k]) # ‘c‘ # 排序操作 sorted(zip(price.values(),price.keys()),key=lambda x:-x[0]) # [(3, ‘c‘), (2, ‘b‘), (1, ‘a‘)]
二、字典和集合
一個字典就是一個鍵集合與值集合的映射關系。字典的keys()方法返回一個展現鍵集合的鍵視圖對象。鍵視圖的一個很少被了解的特性就是它們也支持集合操作,比如集合並、交、差運算。所以,如果你想對集合的鍵執行一些普通的集合操作,可以直接使用鍵視圖對象而不用先將它們轉換成一個set。
字典的items()方法返回一個包含(鍵,值)對的元素視圖對象。這個對象同樣也支持集合操作,並且可以被用來查找兩個字典有哪些相同的鍵值對。
盡管字典的values()方法也是類似,但是它並不支持這裏介紹的集合操作。某種程度上是因為值視圖不能保證所有的值互不相同,這樣會導致某些集合操作會出現問題。不過,如果你硬要在值上面執行這些集合操作的話,你可以先將值集合轉換成set,然後再執行集合運算就行了。
a = { ‘x‘:1, ‘y‘:2, ‘z‘:3 } b = { ‘w‘:4, ‘x‘:5, ‘y‘:6 } # 字典.items()返回的實際是集合 print(a.items() & b.items()) # set() print(a.items() - b.items()) # {(‘z‘, 3), (‘x‘, 1), (‘y‘, 2)} # 字典.keys()返回的實際是集合 print(a.keys() - b.keys()) # {‘z‘} # 由於可能存在重復元素,所以.values()不是集合 # print(a.values() - b.values()) # 報錯
『Python CoolBook』數據結構和算法_字典比較&字典和集合