William

不管走了多远都不要忘记为什么出发

0%

python数据处理效率

字典的过滤

根据键或者值进行大量数据的字典过滤,应尽量选取生成器表达式,或者字典解析式,前者效率更好

以下是一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from datetime import datetime

num_list = [5, 6]
d1 = {
"1": 2,
"2": 5,
"3": 6,
"4": 1,
"5": 3
}
s1 = datetime.now()
d2 = {k: v for k, v in d1.items() if v in num_list}
print d2
s2 = datetime.now()
print (s2 - s1)

s3 = datetime.now()
d3 = ({k, v} for k, v in d1.items() if v in num_list)
print dict(list(d3))
s4 = datetime.now()
print (s4 - s3)

输出:

1
2
3
4
5
6
{'3': 6, '2': 5}
0:00:00.001191
3 6
2 5
{'3': 6, '2': 5}
0:00:00.000033

可见生成器表达式高出几个量级的处理效率,当然数据比较少的时候可以使用字典解析,占用较少的内存。

如果对你有帮助,欢迎赞赏。