問題: 構造一個字典,它是另外一個字典的子集
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 倍。如果對程序運行性能要求比較高的話,需要花點時間去做計時測試。