《Python Cookbook 3rd》笔记(1.17):从字典中提取子集
生活随笔
收集整理的這篇文章主要介紹了
《Python Cookbook 3rd》笔记(1.17):从字典中提取子集
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
從字典中提取子集
問題
你想構(gòu)造一個(gè)字典,它是另外一個(gè)字典的子集。
解法
最簡(jiǎn)單的方式是使用字典推導(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)。比如:
但是,字典推導(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è)試。
總結(jié)
以上是生活随笔為你收集整理的《Python Cookbook 3rd》笔记(1.17):从字典中提取子集的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python外卷(12)-sort(),
- 下一篇: 机器学习问题总结(01)