python枚举dictionary值对象不适用于大型对象

2024-04-19 16:18:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我将一个json文件加载到python中的dictory中,然后枚举json键对象。我有以下代码块:

    datelimit = datetime.datetime(2018, 4, 1)       # limit date for completed_time
to_remove = []
dateformat = '%Y-%m-%dT%H:%M:%S.%f'
for k, v in item_dict.items():                  # enumerate top_level objects
    for i, block in enumerate(v['completed']):  # enumerate inner blocks
        complete_time = datetime.datetime.strptime(   # skip last char from complete_time
            block["complete_time"][:-1], dateformat)
        # print(k, i, complete_time)              # uncomment for tests
        if complete_time < datelimit:           # too old
            to_remove.append((k, i))            # store the index for later processing

for k, i in reversed(to_remove):           # start from the end to keep consistent indices
    del item_dict[k]["completed"][i] 

我注意到,对于小的json文件(几个KBs)来说,这似乎工作得很好。但是,如果json文件非常大(~3 MB),则代码不会执行,并在下面的一行中失败,出现错误:

for i, block in enumerate(v['completed']):  # enumerate inner blocks
    for i, block in enumerate(v['completed']):
KeyError: 'completed'

关于处理更大的json文件有什么建议吗?错误的原因是什么?谢谢


Tags: 文件to代码injsonfordatetimetime