下面的算法采用了更具python风格的方法
我通过更符合逻辑的方式更改最终结构:下面的算法采用了更具python风格的方法,python,algorithm,list,Python,Algorithm,List,我通过更符合逻辑的方式更改最终结构: {'state1': {'city1': ['dict1', 'dict2']}, 'state2': {'City2': ['dict3']}} 以及守则: dir_dict = {} for one in objects: state = one.dir.city.state.name city = one.dir.city.name address = one.dir.address if state not in
{'state1': {'city1': ['dict1', 'dict2']}, 'state2': {'City2': ['dict3']}}
以及守则:
dir_dict = {}
for one in objects:
state = one.dir.city.state.name
city = one.dir.city.name
address = one.dir.address
if state not in dir_dict:
dir_dict[state] = {}
if city not in dir_dict[state]:
dir_dict[state][city] = []
dir_dict[state][city].append(address)
我仍然实现代码@Eric你能显示一些输入和输出示例吗?为什么要设置两次
dir_dict[x.direction.city.state.name]
。@Inbar:设置,然后“uniqueify”它。你的列表格式[{'state1':['city1','City2',]},{'state2':['city3','city4']}
毫无意义。为什么不买本字典呢<代码>{'state1':['city1','City2'],'state2':['city3','city4']}@Eric,但它不是“唯一的”,因为每当到达该语句时,列表将始终只有一个元素。
from collections import defaultdict
dir_dict = defaultdict(lambda: defaultdict(set))
for x in objects:
dir_dict[x.state][x.city].add(x.address)
dir_list = dir_dict.keys()