如何在列表、字典、集合中根据条件筛选数据?
实际案例:
- 过滤掉列表
[3,4,-1,-5,8,9]中的负数 - 筛选字典
{'lili':79,'jim':88,.....}中高于90的项 - 筛选集合
{77,89,23,24,...}中可以被3整除的元素
列表解析
import random import randint
a = [randint(-10,10) for i in range(10)]
#a =[-8, -8, -7, -5, -4, -8, -8, 9, 2, 7]
a = [i for i in a if i>0]
#a = [9, 2, 7]
内置函数 filter
filter是过滤器的意思
import random import randint
a = [randint(-10,10) for i in range(10)]
#a =[-8, -8, -7, -5, -4, -8, -8, 9, 2, 7]
list(filter( lambda x:x>0 ,a))
#[9, 2, 7]
以上是针对列表的。
a = set(a)
#{-8, -7, -5, -4, 2, 7, 9}
{i for i in a if i%==0}
#{9}
或者:
a = [ randint(-10,10) for _ in range(10)]
#[3, -7, -6, 3, -7, 9, 2, 6, -1, -2]
set(filter( lambda x:x>0 ,a))
#{2, 3, 6, 9}
以上是针对集合的。可以发现,集合和列表是类似的
字典解析
d = {i:randint(60,100) for i in range(1,20)}
'''{1: 77,
2: 68,
3: 65,
4: 80,
5: 72,
6: 90,
7: 82,
8: 72,
9: 87,
10: 94,
11: 98,
12: 96,
13: 83,
14: 97,
15: 86,
16: 74,
17: 96,
18: 61,
19: 100}'''
{k:v for k,v in d.items() if v>90}
#{3: 91, 10: 95, 19: 97}