摘要:在本节中,你将学习Python字典推导式,以对字典中的元素进行转换或筛选。
Python字典推导式简介
字典推导式使你能够在 字典 上运行一个 for
循环,并对每个元素执行某些操作,比如转换或筛选,然后返回一个新的字典。
for
循环不同的是,当你正确使用字典推导式时,它提供了一种更具表现力且更简洁的语法。
以下是字典推导式的一般语法:
{key:value for (key,value) in dict.items() if condition}
这个字典推导式表达式会返回一个新的字典,其元素由表达key:value
指定。
Python字典推导式示例
我们将了解如何使用字典推导式来转换和筛选字典中的元素。
使用Python字典推导式来转换字典
假设你有如下这样一个字典,其元素是股票代码和价格:
stocks = {
'AAPL': 121,
'AMZN': 3380,
'MSFT': 219,
'BIIB': 280,
'QDEL': 266,
'LVGO': 144
}
为了将每支股票的价格提高2%,你可能会写出像这样的一个for循环:
stocks = {
'AAPL': 121,
'AMZN': 3380,
'MSFT': 219,
'BIIB': 280,
'QDEL': 266,
'LVGO': 144
}
new_stocks = {}
for symbol, price in stocks.items():
new_stocks[symbol] = price*1.02
print(new_stocks)
输出:
{'AAPL': 123.42, 'AMZN': 3447.6, 'MSFT': 223.38, 'BIIB': 285.6, 'QDEL': 271.32, 'LVGO': 146.88}
它的工作原理如下:
首先,遍历
stocks
字典中的各个键值对。其次,将价格提高2%,然后把该键值对添加到新字典(
new_stocks
)中。
下面的示例展示了如何使用字典推导式来达到相同的结果:
stocks = {
'AAPL': 121,
'AMZN': 3380,
'MSFT': 219,
'BIIB': 280,
'QDEL': 266,
'LVGO': 144
}
new_stocks = {symbol: price * 1.02 for (symbol, price) in stocks.items()}
print(new_stocks)
这个字典推导式与对应的for循环是等效的:
# for loop
new_stocks = {}
for symbol, price in stocks.items():
new_stocks[symbol] = price*1.02
# dictionary comprehension
new_stocks = {symbol: price * 1.02 for (symbol, price) in stocks.items()}
使用列表推导式过滤字典
为了筛选出价格大于200的股票,你可以使用以下for
循环:
stocks = {
'AAPL': 121,
'AMZN': 3380,
'MSFT': 219,
'BIIB': 280,
'QDEL': 266,
'LVGO': 144
}
selected_stocks = {}
for symbol, price in stocks.items():
if price > 200:
selected_stocks[symbol] = price
print(selected_stocks)
它的工作原理如下:
首先,遍历
stocks
字典中的各个键值对。然后,如果价格大于200,就将该键值对添加到
selected_stocks
字典中。
下面的示例使用带有 if
子句的字典推导式来获得相同的结果:
stocks = {
'AAPL': 121,
'AMZN': 3380,
'MSFT': 219,
'BIIB': 280,
'QDEL': 266,
'LVGO': 144
}
selected_stocks = {s: p for (s, p) in stocks.items() if p > 200}
print(selected_stocks)
并且你可以比较一下这for
循环和字典推导式:
# for loop
selected_stocks = {}
for symbol, price in stocks.items():
if price > 200:
selected_stocks[symbol] = price
# dictionary comprehension
selected_stocks = {s: p for (s, p) in stocks.items() if p > 200}
总结
字典推导式会遍历字典中的各个键值对,并且使你能够通过对每个键值对进行转换或筛选来创建一个新的字典。