W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
你想構(gòu)造一個字典,它是另外一個字典的子集。
最簡單的方式是使用字典推導(dǎo)。比如:
prices = {
'ACME': 45.23,
'AAPL': 612.78,
'IBM': 205.55,
'HPQ': 37.20,
'FB': 10.75
}
# Make a dictionary of all prices over 200
p1 = {key: value for key, value in prices.items() if value > 200}
# Make a dictionary of tech stocks
tech_names = {'AAPL', 'IBM', 'HPQ', 'MSFT'}
p2 = {key: value for key, value in prices.items() if key in tech_names}
大多數(shù)情況下字典推導(dǎo)能做到的,通過創(chuàng)建一個元組序列然后把它傳給 dict()
函數(shù)也能實現(xiàn)。比如:
p1 = dict((key, value) for key, value in prices.items() if value > 200)
但是,字典推導(dǎo)方式表意更清晰,并且實際上也會運行的更快些(在這個例子中,實際測試幾乎比 dcit()
函數(shù)方式快整整一倍)。
有時候完成同一件事會有多種方式。比如,第二個例子程序也可以像這樣重寫:
# Make a dictionary of tech stocks
tech_names = { 'AAPL', 'IBM', 'HPQ', 'MSFT' }
p2 = { key:prices[key] for key in prices.keys() & tech_names }
但是,運行時間測試結(jié)果顯示這種方案大概比第一種方案慢1.6倍。如果對程序運行性能要求比較高的話,需要花點時間去做計時測試。關(guān)于更多計時和性能測試,可以參考14.13小節(jié)
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: