Python在生物信息学中的应用:字典推导式

2024-02-21 16:35:41 浏览数 (2)

我们想依据字典中的键或值过滤字典。

解决方案

可以利用字典推导式(dictionary compehension)轻松解决。例如:

代码语言:javascript复制
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}
# 依据键过程
tech_names = {'AAPL', 'IBM', 'HPQ', 'MSFT'}
p2 = {key: value for key, value in prices.items() if key in tech_names}

讨论

大多数情况下,字典推导式可以解决的问题也可以通过创建元组然后将其传递给 dict() 函数解决。例如:

代码语言:javascript复制
p1 = dict((key, value) for key, value in prices.items() if value > 200

但是,字典推导式方案更为清晰,其运行速度也要快很多。

有时候,完成同一件事情可以有多种方法。例如解决方案中的第二个例子可以重写成:

代码语言:javascript复制
# 依据键过程
tech_names = { 'AAPL', 'IBM', 'HPQ', 'MSFT' }
p2 = { key:prices[key] for key in prices.keys() & tech_names }

但根据实践,这种方案的速度也比较慢。在平时的使用过程中,采用最开始的方法就可以了。

参考

  • 《Python Cookbook》第三版
  • http://python3-cookbook.readthedocs.org/zh_CN/latest/

0 人点赞