首页 > 解决方案 > 如何使用 Python 中的大量列表字典来扩展操作?

问题描述

我正在处理 python 中的“大数据”问题,我真的在为可扩展的解决方案而苦苦挣扎。

我目前拥有的数据结构是一个庞大的列表字典,包含数百万个键和数百万个项目的列表。我需要对列表中的项目进行操作。问题有两个方面:

(1) 如何对这么大的数据结构做可伸缩的操作?

(2)如何在内存限制的情况下做到这一点?

对于某些代码,这是一个非常基本的列表字典示例:

example_dict1 = {'key1':[367, 30, 847, 482, 887, 654, 347, 504, 413, 821],
    'key2':[754, 915, 622, 149, 279, 192, 312, 203, 742, 846], 
    'key3':[586, 521, 470, 476, 693, 426, 746, 733, 528, 565]}

对于元素的简单操作,通常的方法是遍历字典:

new_dictionary = {}

for k, v in example_dict.items():
    new_list = []    
    for i in v:      ## iterate through dictionary lists
        i = compute_something(i) ## this is just an example, e.g. i**2 or i-13 would also work
        new_list.append(i)
    # now, create a new dictionary
    new_dictionary[k] = new_list

问题是,这不适用于这么大的字典——我正在使用超过 250GB 内存的服务器,它很快就会变得太大而无法存储。它也太慢/不可扩展,因为这是一个处理器的单次迭代。

这个问题有可扩展的解决方案吗?

也许它会以某种方式分解字典,使用多处理进行计算并聚合?或者有没有办法将这些数据保存到磁盘?

我失去了想法...

标签: pythondictionarymemorybigdatadask

解决方案


推荐阅读