字典的过滤
根据键或者值进行大量数据的字典过滤,应尽量选取生成器表达式,或者字典解析式,前者效率更好
以下是一个例子:
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
|
可见生成器表达式高出几个量级的处理效率,当然数据比较少的时候可以使用字典解析,占用较少的内存。