📜  过滤列表字典 - Python (1)

📅  最后修改于: 2023-12-03 14:57:54.486000             🧑  作者: Mango

过滤列表字典 - Python

在Python中,我们经常需要使用过滤功能来从列表或字典中选择特定的元素。过滤通常基于一定的条件或规则来筛选出我们需要的数据。Python提供了多种方法来过滤列表和字典,让我们一起来看看吧!

过滤列表
使用列表推导式

列表推导式是一种简洁的语法,用于从一个列表中选择满足特定条件的元素,并将它们构建成一个新的列表。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [num for num in numbers if num % 2 == 0]

print(even_numbers)  # 输出: [2, 4, 6, 8, 10]

在上述示例中,我们使用列表推导式 even_numbers = [num for num in numbers if num % 2 == 0] 过滤出了原始列表 numbers 中的所有偶数。

使用filter()函数

filter() 函数接受一个函数和一个列表作为参数,然后返回一个新的可迭代对象,其中包含了满足函数条件的元素。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def is_even(num):
    return num % 2 == 0

even_numbers = list(filter(is_even, numbers))

print(even_numbers)  # 输出: [2, 4, 6, 8, 10]

在上述示例中,我们定义了一个用于判断数字是否为偶数的函数 is_even(),然后使用 filter() 函数对列表 numbers 进行过滤。

过滤字典
使用字典推导式

字典推导式允许我们从一个字典中选择满足特定条件的键值对,并将它们构建成一个新的字典。

scores = {'Alice': 80, 'Bob': 75, 'Charlie': 90, 'Dave': 95}
passed_scores = {name: score for name, score in scores.items() if score >= 80}

print(passed_scores)  # 输出: {'Alice': 80, 'Charlie': 90, 'Dave': 95}

在上述示例中,我们使用字典推导式 {name: score for name, score in scores.items() if score >= 80} 过滤出了原始字典 scores 中分数大于等于80的键值对。

使用字典解析和lambda函数

字典解析是一种利用lambda函数过滤字典的简洁方法。

scores = {'Alice': 80, 'Bob': 75, 'Charlie': 90, 'Dave': 95}
passed_scores = dict(filter(lambda item: item[1] >= 80, scores.items()))

print(passed_scores)  # 输出: {'Alice': 80, 'Charlie': 90, 'Dave': 95}

在上述示例中,我们使用了lambda函数 lambda item: item[1] >= 80 来判断字典中的值是否大于等于80,然后使用 filter() 函数和 dict() 函数来过滤和构建新的字典。

以上是在Python中过滤列表和字典的几种常见方法,它们可以让我们更轻松地筛选出所需的数据。无论是使用列表推导式还是函数,选择最适合你的情况的方法来实现过滤功能吧!