下面的算法采用了更具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()