MST

星途 面试题库

面试题:Python在大型数据场景下字典与列表转换的优化

假设你有一个非常大的字典,键是从1到1000000的整数,值是随机生成的字符串(假设生成字符串的函数为 `generate_random_string()` 已定义)。现在需要将这个字典转换为列表,列表中的元素是包含键值对的元组。在转换过程中,由于内存限制,不能一次性将整个字典读入内存处理,请设计一个优化的Python方案实现字典到列表的转换,并说明思路。
36.5万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

思路

  1. 由于不能一次性将整个字典读入内存处理,我们采用分块处理的方式。
  2. 可以使用生成器来逐块生成字典的键值对,每次生成一部分键值对,处理后再生成下一部分,这样可以有效控制内存使用。

代码实现

def generate_random_string():
    # 这里假设已有实现
    pass


def dict_to_list_generator():
    chunk_size = 1000  # 可以根据实际内存情况调整分块大小
    for i in range(1, 1000001, chunk_size):
        end = min(i + chunk_size, 1000001)
        sub_dict = {k: generate_random_string() for k in range(i, end)}
        for key, value in sub_dict.items():
            yield (key, value)


result_list = list(dict_to_list_generator())