python進階(資料結構和演算法[三])

來源:互聯網
上載者:User

python進階(資料結構和演算法[三])

在字典上將鍵映射到多個值上

一鍵多值字典

d = {'a':[1,2,3], 'b':[4,5]}e = {'a':{1,2,3}, 'b':{4,5}}

可以使用from collections import defaultdict使用預設字典類,它的一個特點是自動初始化第一個值,後面只需要關注添加元素即可。

from collections import defaultdictd = defaultdict(list)d['a'].append(1)d['a'].append(4)...d = defaultdict(set)d['a'].add(5)...

使用範例:

d = defaultdict(list)for key, value in pairs: d[key].append(value)
讓字典保持有序
from collections import OrderedDictd = OrderedDict()d['grok'] = 4d['foo'] = 1d['abr'] = 2for key in d: print(key, d[key])

輸出:

grok 4foo 1abr 2

對字典做迭代時,它會嚴格按照元素初始添加順序進行。

與字典有關的計算問題
prices = { 'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, 'FB': 10.75}# 利用zip()將字典的鍵和值反轉過來min_price = min(zip(prices.values(), prices.keys()))max_price = max(zip(prices.values(), prices.keys()))print(min_price)print(max_price)# 要排序只要使用sorted函數即可price_sorted = sorted(zip(prices.values(), prices.keys()))for key, value in price_sorted: print(key, value)

輸出:

(10.75, 'FB')(612.78, 'AAPL')10.75 FB37.2 HPQ45.23 ACME205.55 IBM612.78 AAPL

我們看一下如果不使用zip(),效果會怎麼樣?

prices = { 'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, 'FB': 10.75}print(min(prices)) #只會尋找鍵print(min(prices.values())) # 只尋找值,不能映射到鍵上//附加prices = {'AAA':34, 'BBB':34}print(min(zip(prices.values(), prices.keys()))) #反轉之後當值相等的時候,再比較值的大小
在兩個字典中尋找相同點
a = { 'x' : 1, 'y' : 2, 'z' : 3}b = { 'w' : 10, 'x' : 11, 'y' : 2}print('Common keys:', a.keys() & b.keys())print('Keys in a not in b:', a.keys() - b.keys())print('(key,value) pairs in common:', a.items() & b.items()

輸出:

Common keys: {'y', 'x'}Keys in a not in b: {'z'}(key,value) pairs in common: {('y', 2)}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.