在Python中处理大型词典列表的最佳方法

在Python中处理大型词典列表的最佳方法,python,dictionary,Python,Dictionary,我正在进行一项统计测试,使用10000个排列作为零分布 每个排列都是一个10000键的字典。每个键都是一个基因,每个值都是一组患者对应的基因。此词典是通过编程生成的,可以写入文件或从文件读入 我希望能够迭代这些排列来执行统计测试;但是,在堆栈上保留这个大列表会降低我的性能 有没有一种方法可以将这些字典保存在存储内存中,并在我遍历它们时生成排列 谢谢大家! 这是一个一般的计算问题;您需要存储数据的内存速度,但内存不足。您至少有以下选项: 购买更多内存(显然) 让进程交换。这就让操作系统决定将哪些

我正在进行一项统计测试,使用10000个排列作为零分布

每个排列都是一个10000键的字典。每个键都是一个基因,每个值都是一组患者对应的基因。此词典是通过编程生成的,可以写入文件或从文件读入

我希望能够迭代这些排列来执行统计测试;但是,在堆栈上保留这个大列表会降低我的性能

有没有一种方法可以将这些字典保存在存储内存中,并在我遍历它们时生成排列


谢谢大家!

这是一个一般的计算问题;您需要存储数据的内存速度,但内存不足。您至少有以下选项:

  • 购买更多内存(显然)
  • 让进程交换。这就让操作系统决定将哪些数据存储在磁盘上,哪些数据存储在内存中
  • 不要一下子把所有的东西都装进内存
由于您在数据集上进行迭代,一种解决方案可能是延迟加载数据:

def get_data(filename):
    with open(filename) as f:
        while True:
            line = f.readline()
            if line:
                yield line
            break

for item in get_data('my_genes.dat'):
    gather_statistics(deserialize(item))

一种变体是将数据拆分为多个文件或将数据存储在数据库中,以便一次批处理n个数据项。

这些排列来自何处?它们来自数据集文件或是通过编程生成的?@JuanLopes它们是通过编程生成的,但可以写入或从文件读取。生成它们时如何存储和访问它们?Thx keizom用于此链接