Python實用技法第16篇:從字典中提取子集

上一篇文章: Python實用技法第15篇:篩選序列中的元素
下一篇文章: Python實用技法第17篇:將名稱映射到序列的元素中

一、需求🙀

咱們想建立一個字典,其自己是另外一個字典的子集。

二、解決方案😸

利用字典推導式可輕鬆解決。segmentfault

prices={
'a':1.1,
'b':2.2,
'c':3.3,
'd':4.4,
'e':5.5
}
p1={key:value for key ,value in prices.items() if value>3}
print(p1)

names={'a','b'}
p2={key:value for key,value in prices.items() if key in names}
print(p2)

結果:函數

{'c': 3.3, 'd': 4.4, 'e': 5.5}
{'a': 1.1, 'b': 2.2}

三、分析😈

大部分能夠用字典推導式解決的問題也能夠經過建立元組序列而後將它們傳給dict()函數來完成,例如:測試

#結果爲:{'c': 3.3, 'd': 4.4, 'e': 5.5}
p3=dict((key,value) for key,value in prices.items() if value>3)

但在字典推導式的方案更加清晰,並且實際運行起來也快不少。(第一種效率會快將近2倍)code

有時候會有多種方法來完成同一件時間。例如,第二個例子還能夠重寫成:get

#結果爲:{'b': 2.2, 'a': 1.1}
p4={key:prices[key] for key in prices.keys() & names}

可是,測試代表這種解決方案几乎要比第一種慢1.6倍。所以,當出現多種方案解決同一問題時,能夠稍稍測試一下來研究所花費的時間。it

上一篇文章: Python實用技法第15篇:篩選序列中的元素
下一篇文章: Python實用技法第17篇:將名稱映射到序列的元素中
相關文章
相關標籤/搜索