【Python】大文件处理技巧

前言

最近总会跑些大文件的数据处理工作,以前遇到的数据量都比较小,随便设计数据处理结构都不会影响,但这几天踩了不少坑。。。

处理大文件

1.尽量选择集合、字典数据类型,千万不要选择列表,列表的查询速度会超级慢,同样的,在已经使用集合或字典的情况下,不要再转化成列表进行操作,比如:

values_count = 0
# 不要用这种的
if values in dict.values():
    values_count += 1
# 尽量用这种的
if keys,values in dict:
    values_count += 1

后者的速度会比前者快好多好多。

2.如果遇到某个文件,其中有属性相同的,但又不能进行去重操作,没有办法使用集合或字典时,可以增加属性,比如将原数据重新映射出一列计数属性,让每一条属性具有唯一性,从而可以用字典或集合处理:

def fun(x):
    return '(' + str(x) + ', 1)'
list(map(fun,[1,2,3]))

使用map函数将多个相同属性增加不同项。
3.对于字典,多使用iteritems()少使用items(),iteritems()返回迭代器:

>>> d = {'a':1,'b':2} 
>>> for i in d.items() :
....    print i 
('a',1) 
('b',2) 
>>> for k,v in d.iteritems() :
...     print k,v 
('a',1) 
('b',2) 

字典的items函数返回的是键值对的元组的列表,而iteritems使用的是键值对的generator,items当使用时会调用整个列表 iteritems当使用时只会调用值。

猜你喜欢

转载自blog.csdn.net/roguesir/article/details/79847989