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