详解Python在列表,字典,集合中根据条件筛选数据

  • Post category:Python

在Python中,可以使用条件筛选数据来过滤列表、字典和集合中的元素。这种方式可以让我们只保留符合特定要求的元素,可以大大方便我们对数据的处理和分析。下面我们就分别介绍一下Python在列表、字典、集合中进行条件筛选的方法。

列表

Python中创建列表,可以使用方括号 [] 或者 list() 函数。列表具有顺序性,而且可以存储任何类型的数据。当我们需要根据条件筛选数据时,可以使用列表推导式(list comprehension)的方式。

列表推导式基本语法格式如下:

[expression for item in iterable if condition]

它的意思是对于可迭代对象iterable中的元素item,如果满足条件condition,则对其进行表达式expression的处理。例如,如果我们需要从一个包含多个整数的列表中,选取其中所有大于等于5的数,可以这样进行筛选:

lst = [1, 2, 5, 7, 8, 10, 11]
new_lst = [x for x in lst if x >= 5]
print(new_lst)

运行结果:

[5, 7, 8, 10, 11]

这个程序的执行步骤如下:

  • 创建列表lst;
  • 创建新的列表new_lst,使用列表推导式从lst中选择所有大于等于5的元素,存储到new_lst中;
  • 打印new_lst的内容。

除了常规的比较操作,列表推导式中还可以使用更多的操作符和函数,例如 in、not in、and、or、range()、zip()等。

字典

字典是无序的数据集合,在Python中用花括号 {} 表示,它由键值对组成。要对字典中的数据进行条件筛选,可以先通过字典的keys()、values()方法获得键或值的列表,然后使用列表推导式进行筛选。

例如,下面的程序使用字典推导式选择出所有值等于123的键:

dic = {'a': 123, 'b': 456, 'c': 123, 'd': 789}
new_dic = {k: v for k, v in dic.items() if v == 123}
print(new_dic)

运行结果:

{'a': 123, 'c': 123}

程序的执行步骤如下:

  • 创建字典dic;
  • 创建新的字典new_dic,使用字典推导式从dic中选择所有值为123的键和值,存储到new_dic中;
  • 打印new_dic的内容。

另一个常用的字典筛选方式是使用filter()函数。filter()函数可以根据指定的函数对字典元素进行过滤,返回满足条件的元素组成的迭代器。

例如,下面的程序使用filter()筛选出值为奇数的元素:

dic = {'a': 2, 'b': 3, 'c': 4, 'd': 5}
new_dic = dict(filter(lambda x: x[1] % 2 == 1, dic.items()))
print(new_dic)

运行结果:

{'b': 3, 'd': 5}

程序的执行步骤如下:

  • 创建字典dic;
  • 使用filter()函数筛选出字典中值为奇数的元素,并转化为字典形式存储到new_dic中;
  • 打印new_dic的内容。

集合

Python中的集合是不可重复的数据集合,可用花括号 {} 或 set() 函数创建。要进行条件筛选,可以使用集合的推导式(set comprehension)。

集合推导式的基本语法格式如下:

{expression for item in iterable if condition}

它的意思是对于可迭代对象iterable中的元素item,如果满足条件condition,则对其进行表达式expression的处理,并添加到新的集合中。

例如,下面的程序使用集合推导式从一个列表中选取所有能够被3整除的数,结果是集合:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_set = {x for x in lst if x % 3 == 0}
print(new_set)

运行结果:

{3, 6, 9}

程序的执行步骤如下:

  • 创建列表lst;
  • 创建新的集合new_set,使用集合推导式从lst中选择所有能够被3整除的元素,存储到new_set中;
  • 打印new_set的内容。

除了集合推导式,还可以使用集合的过滤器过滤元素。过滤器可以是函数或者lambda函数。例如,下面的程序使用集合的过滤器选择出所有值为负数的元素:

s = {-1, 2, -3, 4, -5, 6}
new_set = set(filter(lambda x: x < 0, s))
print(new_set)

运行结果:

{-1, -5, -3}

程序的执行步骤如下:

  • 创建集合s;
  • 使用filter()函数筛选出集合中值小于0的元素,并转化为集合形式存储到new_set中;
  • 打印new_set的内容。

以上就是Python在列表、字典、集合中根据条件筛选数据的完整攻略。这种技巧可以帮助程序员更快地处理数据。