나는 조건 목록과 그 조건에 대한 인수를 검사하는 몇 가지 함수를 정의하는 interface.py라는 모듈을 사용하려고합니다. 그러나 수천 가지 조건이 있으므로 모든 목록을 볼 필요가 없도록 목록 대신 사전을 사용하고 싶습니다. 나는 다음과 같은 코드를 사용하고이 작업을 수행하려면 :파이썬 모듈이 포함 된 즉시 코드 실행
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가 사전 될 것이라고 가정 기록됩니다.
불행히도 이것은 작동하지 않습니다. 이 코드는 장고 페이지로 가져 오기 때문에 오류 세부 정보를 제공하는 것은 어렵습니다.이 질문은 복잡하지 않으므로 장고에 관해 이야기하는 것을 피하려고합니다. 본질적으로이 코드를 포함하는 페이지는로드되지 않으며 목록을 사용하여 다시 변경하면 모든 것이 정상적으로 작동합니다.
내 생각에 문제는 파이썬이 가져 오기 문을 처리하는 방법과 관련이 있다는 것입니다. interfaceTo를 가져 오자마자 listToDictionary 변환이 필요합니다. 그렇지 않으면 인터페이스 함수가 사전을 기대하고 대신 목록을 가져옵니다. 이것이 일어나고있는 어떤 방법이 있습니까?
파이썬은 가져 오기 할 때 모듈의 본문을 실행하므로 문제가되지 않습니다. –
변수'list'의 이름을 지정하는 것은 결코 좋은 생각이 아닙니다. 내장형을 섀도 잉해야합니다. 대신 다른 이름을 사용하십시오. –
@MartijnPieters 나는 심지어 말하기를 : 변수 이름을 'list'라고 명명하면 항상 끔찍한 생각이다. –