《Python Cookbook(第3版)中文版》——1.17 从字典中提取子集

简介:

本节书摘来自异步社区《Python Cookbook(第3版)中文版》一书中的第1章,第1.17节,作者[美]David Beazley , Brian K.Jones,陈舸 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.17 从字典中提取子集

1.17.1 问题

我们想创建一个字典,其本身是另一个字典的子集。

1.17.2 解决方案

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

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 }

1.17.3 讨论

大部分可以用字典推导式解决的问题也可以通过创建元组序列然后将它们传给dict()函数来完成。例如:

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

但是字典推导式的方案更加清晰,而且实际运行起来也要快很多(以本例中的字典prices来测试,效率要高2倍多)。

有时候会有多种方法来完成同一件事情。例如,第二个例子还可以重写成:

# Make a dictionary of tech stocks
tech_names = { 'AAPL', 'IBM', 'HPQ', 'MSFT' }
p2 = { key:prices[key] for key in prices.keys() & tech_names }
相关文章
|
1月前
|
Python
Python 字典转 dataframe
使用pandas将Python字典转换为DataFrame,需先确保安装pandas(`pip install pandas`)。
18 1
|
7天前
|
Python
Python中字典和集合(二)
Python中字典和集合(二)
|
7天前
|
存储 算法 索引
Python中字典和集合(一)
Python中字典和集合(一)
|
7天前
|
存储 缓存 Python
【Python21天学习挑战赛】字典 && 小数据池
【Python21天学习挑战赛】字典 && 小数据池
|
9天前
|
存储 JSON 数据处理
|
9天前
|
存储 缓存 人工智能
bidict,一个超酷的 Python 双向字典库!
bidict,一个超酷的 Python 双向字典库!
15 1
|
9天前
|
存储 人工智能 索引
Python中的嵌套字典访问与操作详解
Python中的嵌套字典访问与操作详解
17 1
|
10天前
|
JSON 数据可视化 定位技术
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
16 0
|
11天前
|
API Python
[AIGC] Python列表([])和字典({})常用API介绍
[AIGC] Python列表([])和字典({})常用API介绍
|
11天前
|
机器学习/深度学习 存储 数据挖掘
Python从入门到精通——学习基础语法和数据类型 1.2.1变量、整数、浮点数、字符串、布尔值、列表、元组、字典和集合。
Python从入门到精通——学习基础语法和数据类型 1.2.1变量、整数、浮点数、字符串、布尔值、列表、元组、字典和集合。