Python: 从字典中提取子集--字典推导


问题: 构造一个字典,它是另外一个字典的子集

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 倍。如果对程序运行性能要求比较高的话,需要花点时间去做计时测试。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM