从字典中提取子集

问题

你想构造一个字典,它是另外一个字典的子集。

解法

最简单的方式是使用字典推导。比如:

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}

讨论

大多数情况下字典推导能做到的,通过创建一个元组序列然后把它传给 dict() 函
数也能实现。比如:

p1 = dict((key, value) for key, value in prices.items() if value > 200)

但是,字典推导方式表意更清晰,并且实际上也会运行的更快些 (在这个例子中,实际测试几乎比 dcit() 函数方式快整整一倍)。

有时候完成同一件事会有多种方式。比如,第二个例子程序也可以像这样重写:

# Make a dictionary of tech stocks
tech_names = { 'AAPL', 'IBM', 'HPQ', 'MSFT' }
p2 = { key:prices[key] for key in prices.keys() & tech_names }

但是,运行时间测试结果显示这种方案大概比第一种方案慢 1.6 倍。如果对程序运行性能要求比较高的话,需要花点时间去做计时测试。

《Python Cookbook 3rd》笔记(1.17):从字典中提取子集相关推荐

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

    问题: 构造一个字典,它是另外一个字典的子集 answer: 最简单的方式是使用字典推导 eg1: 1. >>>prices = {'ACME': 45.23, 'AAPL': 61 ...

  2. 《Python Cookbook 3rd》笔记汇总

    文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...

  3. 《Python cookbook》笔记一

    <Python cookbook> 第一章 数据结构和算法 - *号解压多个变量 - 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError .那么 怎样才能从这个可 ...

  4. 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素

    <Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...

  5. Python Cookbook 3rd Edition Documentation

    Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...

  6. Machine Learning with Python Cookbook 学习笔记 第6章

    Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...

  7. 《Python cookbook》笔记二

    <Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...

  8. Machine Learning with Python Cookbook 学习笔记 第8章

    Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...

  9. Machine Learning with Python Cookbook 学习笔记 第9章

    Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...

最新文章

  1. 服务器上安装运行fastqc
  2. 【本人秃顶程序员】synchronized锁住的是代码还是对象
  3. python的中文含义-python中的 * 和 ** 作用含义
  4. MySQL内部执行流程
  5. 关于爬虫的日常复习(8)—— 实战:request+正则爬取猫眼榜单top100
  6. pythonclass全局变量_python怎么使用全局变量
  7. 软件驱动安装在docker_别为Docker本地实现不支持GPU发愁,解决方案在此!
  8. I/O多路转接之poll,epoll
  9. 雷林鹏分享:使用Yaf Codes Generator工具构建YAF测试环境
  10. Tomcat6.0连接器源码分析3
  11. 网易云音乐广告CTR预估模型演进过程
  12. 毕业设计写作基本步骤
  13. office 2010图标出现异常时的解决办法
  14. C语言多多搬果子思路,看图写话《小刺猬搬果子》
  15. 计算机组成原理 / 反汇编实验(2)拆弹实验
  16. 媒体播控系统、信息发布系统 使用说明
  17. Pocket英语语法---六、感官动词接不同的动词表示什么意思
  18. 引发的异常: 0xC0000005: 读取位置 0x0000000000000008 时发生访问冲突
  19. 员工离职2个月,前领导要求他回去改代码,员工:收费5千一次
  20. 解决/proc/sys/kernel/yama/ptrace_scope to 0的问题

热门文章

  1. Wince6 Eboot中加入开机画面
  2. VxWorks动态加载.out文件
  3. 链表怎么输出最后一个元素无空格_剑指offer系列----从尾到头打印链表
  4. c#sql防注入模糊查询_SQL中利用LIKE实现模糊查询的功能
  5. Java学习笔记—生产者和消费者模式
  6. Linux部署动态网页,linux构建动态WEB服务器安装篇
  7. 将 Fortinet 连接到
  8. python time 时间戳_Python的time.time()返回本地或UTC时间戳吗?
  9. 设计模式(六)J2EE 模式
  10. 【Python CheckiO 题解】Flatten a List