Python: 從字典中提取子集--字典推導


問題: 構造一個字典,它是另外一個字典的子集

answer: 最簡單的方式是使用字典推導

eg1:

1.

>>>prices = {'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, 'FB': 10.75}

>>>p1 = {key: value for key, value in prices.items() if value > 200}

>>>p1

{'AAPL': 612.78,'IBM': 205.55}

2.

字典推導能做到的,通過創建一個元組序列然后把它傳給dict() 函數也能實現。比如:
>>>p1 = dict((key, value) for key, value in prices.items() if value > 200)

但是,字典推導方式表意更清晰,並且實際上也會運行的更快些(在這個例子中,實際測試幾乎比dcit() 函數方式快整整一倍)。

eg2:

1.

>>>tech_names = {'AAPL', 'IBM', 'HPQ', 'MSFT'}

>>>p2 = {key: value for key, value in prices.items() if key in tech_names}

  {'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20}

2.

>>>tech_names = {'AAPL', 'IBM', 'HPQ', 'MSFT'}

>>>p2 = { key:prices[key] for key in prices.keys() & tech_names }

但是,運行時間測試結果顯示這種方案大概比第一種方案慢1.6 倍。如果對程序運行性能要求比較高的話,需要花點時間去做計時測試。

 


免責聲明!

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



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