Python 嵌套字典中的父项和子项列表

Python 嵌套字典中的父项和子项列表,python,dictionary,nested,Python,Dictionary,Nested,我有一个列表,我想转换成嵌套字典。列表的第一个元素是父元素,第二个元素是子元素。我是否可以递归地执行此操作,而不必继续为每个级别创建帮助器列表?我不明白这一点,觉得自己很傻 relations = [["basket", "money"], ["basket", "fruits"], ["fruits", "orange"], ["fruits", "apple"], ["basket", "

我有一个列表,我想转换成嵌套字典。列表的第一个元素是父元素,第二个元素是子元素。我是否可以递归地执行此操作,而不必继续为每个级别创建帮助器列表?我不明白这一点,觉得自己很傻

relations = [["basket", "money"],
             ["basket", "fruits"],
             ["fruits", "orange"],
             ["fruits", "apple"],
             ["basket", "vegetables"],
             ["vegetables", "bean"],
             ["vegetables", "tomato"],
             ["tomato", "red tomato"],
             ["tomato", "green tomato"],
             ["vegetables", "pepper"],
             ["sweets", "candy"]]


result = {}
running_list = []

for parent, child in relations:
    if parent == "basket":
        result[child] = {}
        running_list.append(child)

for parent, child in relations:
    if parent in running_list:
        result[parent] = {child : {}}

print result

只需创建一个将名称映射到相应词典的词典:

items = {}
for parent, child in relations:
    parent_dict = items.setdefault(parent, {})
    child_dict = items.setdefault(child, {})
    if child not in parent_dict:
        parent_dict[child] = child_dict

result = items['basket']  # basket is the top-level item
这将产生:

>>> items = {}
>>> for parent, child in relations:
...     parent_dict = items.setdefault(parent, {})
...     child_dict = items.setdefault(child, {})
...     if child not in parent_dict:
...         parent_dict[child] = child_dict
...
>>> items['basket']
{'money': {}, 'vegetables': {'tomato': {'green tomato': {}, 'red tomato': {}}, 'bean': {}, 'pepper': {}}, 'fruits': {'orange': {}, 'apple': {}}}
>>> from pprint import pprint
>>> pprint(items['basket'])
{'fruits': {'apple': {}, 'orange': {}},
 'money': {},
 'vegetables': {'bean': {},
                'pepper': {},
                'tomato': {'green tomato': {}, 'red tomato': {}}}}

预计产量是多少?非常感谢!我玩弄了你的例子,最终得到了它。