我正在尝试使用一个名为interface.py的模块,它定义了一个条件列表和一些函数来检查这些条件的参数。然而,有成千上万的条件,所以我想使用字典而不是列表来防止需要查看所有这些条件。要做到这一点,我用下面的代码:尽快在Python模块中执行代码
def listToDictionary(list):
"""This function takes a list of conditions and converts it to a dictionary
that uses the name of the condition as a key."""
d = {}
for condition in list:
if condition.name.lower() not in d:
d[condition.name.lower()] = []
d[condition.name.lower()].append(condition)
return d
conditionList = listToDictionary(conditions.list) #the condition list comes from another module
接着,在该文件是带参数的使用条件列表比较实际的接口功能 - 这些功能都写假设conditionList将是一本字典。
不幸的是,这是行不通的。提供错误细节是很困难的,因为这个代码是由一个Django页面导入的,我试图避免谈论Django,所以这个问题并不复杂。基本上包含这些代码的页面将不会加载,如果我将其更改回仅使用列表,一切正常。
我怀疑这个问题与Python如何对待导入语句有关。我需要listToDictionary转换在导入interface.py后立即运行,否则接口函数将会期待一个字典并获取一个列表。有什么方法可以确保这种情况发生?
Python在导入时执行模块的主体,所以这不是你的问题。 –
命名一个变量'list'绝不是一个好主意,你会隐藏内置类型。改为使用其他名称。 –
@MartijnPieters我甚至会说:命名变量'list'总是一个可怕的想法 –