我想在文件之间定义大型字典对象的内容。我想知道这在python中是否可行。
理想情况下,这就是我想要做的事情:
主文件:(dict_object_main.py)
# File name: dict_object_main.py
import dict_object_sub1
import dict_object_sub2
dict_object = {}
def doSomeStuffWithTheDictObject:
...
return
第一个为“dict_object”添加了大量内容的文件:(dict_object_sub1.py)
# File name: dict_object_sub1.py
from dict_object_main import dict_object
dict_object['sub1'] ={
'property1':'value1'
...
,'property9999':'value9999'
}
为“dict_object”添加了大量内容的第二个文件:(dict_object_sub2.py)
# File name: dict_object_sub2.py
from dict_object_main import dict_object
dict_object['sub2'] ={
'property1':'value1'
...
,'property9999':'value9999'
}
我在javascript中设置了类似的东西。在Python中这样做是否可以,或者我应该采用不同的方式吗?
谢谢!
答案 0 :(得分:2)
编辑:我之前回答的第一部分是错误的。我学到的教训是没有循环依赖。以下是正确的:
另一种选择是在主文件中尝试:
from dict_object_sub1 import dict_object_sub1
from dict_object_sub2 import dict_object_sub2
dict_object = {}
dict_object.update(dict_object_sub1)
dict_object.update(dict_object_sub2)
然后在两个子文件中执行以下操作:
# dict_object_sub1.py
dict_object_sub1 = {...}
答案 1 :(得分:1)
您可能希望改用update
方法。
# Same for dict_object_sub1.py or dict_object_sub2.py
from dict_object_main import dict_object
dict_object.update({
'prop1': 'val1',
# ...
})
注意:强> 我认为将声明分成两个不同的文件是没有多大意义的。在两种情况下,字典占用的最终内存都是完全相同的。
修改强> 正如daveydave400在他的回答中指出的那样,导入顺序也是错误的。
您需要至少3个不同的文件(或在导入模块中执行更新):
一个dict_declare.py文件,您可以在其中声明字典:
dict_object = {}
每个部分字典声明的文件:
from dict_object import dict_object
dict_object.update({
'prop1': 'val1',
# ...
})
您的主文件:
from dict_declare import dict_object
import dict_object_sub<n>
# ... repeat
def doSomeStuffWithTheDictObject:
...
return