首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python 3中高效地循环遍历嵌套字典的方法

在python 3中高效地循环遍历嵌套字典的方法
EN

Stack Overflow用户
提问于 2020-04-16 01:17:46
回答 1查看 48关注 0票数 1

我有一个嵌套的字典,示例是dict = {'exp_0': {'A':obj, 'B':obj}, 'exp_1': {'A': obj, 'C':obj, 'D':obj}, 'exp_2': {'E':obj, 'C': obj, 'F':obj}}

obj是一个类的对象,我需要为每个元素调用一个obj函数。所以我写了下面这段代码

代码语言:javascript
复制
for expr in dict:
    for k, v in dict[expr].items():
        v.somefunction() ## some function is in obj class

def somefunction():
    # this class has self.id variable
    inst = {"a": self.a, "b":self.b}
    try:
        with open("test", "w") as ffile:
            json.dump(inst, ffile)
        print("success for %s" %(self.id))
    except:
        print("Failre for %s" %(self.id))

这段代码运行得很好,问题是,它花费了大量的时间,假设嵌套字典{'A': obj, 'B': obj, ...}有500个元素,那么它将使用8-9 seconds

有没有什么时间有效的方法来做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2020-04-16 01:51:28

时间可能不是字典迭代所用的时间。实际时间可能是由于在for循环中多次打开和关闭文件,并在for循环中执行json.dump()。因为somefunction()是从嵌套循环内部调用的。

您应该在中间集合中收集您的数据。然后打开文件一次,写入值列表,然后在最后关闭文件(同样,只有一次)。它应该会提高性能。

json.dump()的多次调用也可能是一个问题。

在这些情况下,最好将代码转换为批量执行操作。这将使您的性能得到改善。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61234702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档