MEMOO
MEMOO
Published on 2025-04-18 / 7 Visits
0
0

Python字典推导式

摘要:在本节中,你将学习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}

总结

  • 字典推导式会遍历字典中的各个键值对,并且使你能够通过对每个键值对进行转换或筛选来创建一个新的字典。


Comment