『Python CoolBook』資料結構和演算法_字典比較&字典和集合

來源:互聯網
上載者:User

標籤:理解   highlight   post   資料結構   ted   不能   字典   pytho   運算   

 一、字典元素排序

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』資料結構和演算法_字典比較&字典和集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.