超大的python字典

时间:2013-07-17 13:27:45

标签: python memory csv dictionary

我有大型csv文件(大约15e6行)。

每一行都是这样的:id_user | id_software。

我的目标是构建一个字典,其键是2个区分软件的元组,其值是这两个软件安装在同一台计算机上的概率(计算机= id_user)。

第一步是阅读csv文件并构建一个字典,其密钥是用户ID,其值是包含用户计算机上安装的所有软件的元组。

第二步是创建阅读第一个字典的最终字典。

我的问题是,csv文件的第一个5e5 lignes产生了1GB字典(我使用heapy来分析我的算法)。

有什么想法可以帮我解决这个问题吗?

以下是代码:

import csv
import itertools
dict_apparition={}
dict_prob_jointe={}
nb_user=0
with open('discovery_requests_id.csv','rU') as f:
    f=csv.reader(f)
    f.next()
    for row in f:
    a=int(row[1])
    b=int(row[0])
        try:
            if not a in dict_apparition[b]:
                dict_apparition[b]+=(a,)
        except:
            dict_apparition[b]=(a,)
            nb_user+=1

for key1 in dict_apparition.keys():
    l=itertools.combinations(dict_apparition[key1],2)
    for item in l:
        try:
            dict_prob_jointe[item]+=1.0/nb_user
        except:
            dict_prob_jointe[item]=1.0/nb_user
return dict_prob_jointe

Thansks!

0 个答案:

没有答案