Python 3.x 在Python3中循环嵌套字典的高效时间方法
我有一个嵌套字典,示例是Python 3.x 在Python3中循环嵌套字典的高效时间方法,python-3.x,Python 3.x,我有一个嵌套字典,示例是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的函数。所以我写了下面的一段代码 for expr in dict: for k, v in dict[expr].items(): v.somefunction() ## some function is
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的函数。所以我写了下面的一段代码
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秒
有没有节省时间的方法可以做到这一点?字典迭代可能不会占用时间。实际时间可能是由于在for循环中多次打开和关闭文件,并在for循环中执行
json.dump()
。因为somefunction()
是从嵌套循环内部调用的
您更应该在中间集合中收集数据。然后打开文件一次,写入值列表,最后关闭文件(再次,仅一次)。它应该提高性能
多次调用json.dump()
也可能是一个问题
在这些情况下,最好将代码转换为批量执行操作。如果他需要为每个对象编写一个新文件,他怎么能只打开一次文件呢?如果他必须为每个对象编写新文件,那么他就无能为力了。唯一的事情是并行化进程。@RoadRunner是的,你是对的,我需要为每个对象转储一个新文件。@ggupta,你为什么需要这样做?可能会让我们知道问题所在。也许会有更好的解决办法。@RohitJain,整个情况是object是一个容器类,比如说一个窗口。对于像“A”、“B”这样的每个元素,它们都有一个单独的容器。所以我需要将每个元素容器的实例变量(不是全部)转储到新文件中。附言:泡菜不是我的选择。