📜  Python|过滤元组字典键(1)

📅  最后修改于: 2023-12-03 15:19:22.682000             🧑  作者: Mango

Python|过滤元组字典键

在Python中,我们经常遇到需要过滤一个元组中的元素或者一个字典中的键值对的场景。例如,我们要从一个包含多个元组的元组中,过滤出某些元素符合一定条件的子元组;或者,我们要从一个字典中,过滤出只包含满足一定条件的键值对的新字典。

本文将介绍如何在Python中进行元组和字典的过滤操作。我们先来看看元组的过滤操作。

过滤元组

假设我们有一个数据集,其中包含多个元组,每个元组由三个元素组成:

data = [
    ('Alice', 25, 'F'),
    ('Bob', 30, 'M'),
    ('Charlie', 35, 'M'),
    ('David', 40, 'M'),
    ('Eva', 45, 'F'),
    ('Frank', 50, 'M'),
    ('Grace', 55, 'F'),
    ('Harry', 60, 'M'),
    ('Iris', 65, 'F'),
    ('Jack', 70, 'M')
]

我们现在要过滤出所有年龄在45岁及以上的人的信息,并返回一个新的元组:

result = []

for item in data:
    if item[1] >= 45:
        result.append(item)

print(result)
# output:
# [('Eva', 45, 'F'), ('Frank', 50, 'M'), ('Grace', 55, 'F'), ('Harry', 60, 'M'), ('Iris', 65, 'F'), ('Jack', 70, 'M')]

我们可以使用for循环加上判断语句的方式,逐一遍历数据集的每个元素,再将符合条件的元素加入到结果集中。 但是,Python中提供了更加简洁的方法来完成这个操作: 列表推导式。

result = [item for item in data if item[1] >= 45]
print(result)
# output:
# [('Eva', 45, 'F'), ('Frank', 50, 'M'), ('Grace', 55, 'F'), ('Harry', 60, 'M'), ('Iris', 65, 'F'), ('Jack', 70, 'M')]

使用列表推导式,我们可以在一行代码中完成过滤操作。列表推导式的语法是:

[expression for item in iterable if condition]

其中,expression表示表达式,item表示元素,iterable表示可迭代对象,condition表示条件,也可以省略。

过滤字典

类似元组,我们也可以对字典进行过滤操作。假设我们有以下的字典:

data = {
    'Alice': 25,
    'Bob': 30,
    'Charlie': 35,
    'David': 40,
    'Eva': 45,
    'Frank': 50,
    'Grace': 55,
    'Harry': 60,
    'Iris': 65,
    'Jack': 70
}

现在我们需要过滤出所有年龄在45岁及以上的人的信息,并返回一个新的字典:

result = {}

for key, value in data.items():
    if value >= 45:
        result[key] = value

print(result)
# output:
# {'Eva': 45, 'Frank': 50, 'Grace': 55, 'Harry': 60, 'Iris': 65, 'Jack': 70}

我们可以遍历字典的所有键值对,再逐一进行判断,将符合条件的键值对加入到结果字典中。但是,像元组一样,Python中也提供了一种更加简洁的方式来完成字典的过滤操作:字典推导式。

result = {key: value for key, value in data.items() if value >= 45}
print(result)
# output:
# {'Eva': 45, 'Frank': 50, 'Grace': 55, 'Harry': 60, 'Iris': 65, 'Jack': 70}

使用字典推导式,我们同样可以在一行代码中完成字典的过滤操作。字典推导式的语法是:

{key_expression: value_expression for item in iterable if condition}

其中,key_expression表示键的表达式,value_expression表示值的表达式,item表示元素,iterable表示可迭代对象,condition表示条件,也可以省略。

总结一下,Python中提供了多种方式来完成元组和字典的过滤操作,其中最简洁的方式是使用列表推导式和字典推导式。它们不仅简单,而且可以有效提升代码的可读性和运行效率,是Python中值得掌握的重要技巧之一。