从文本文件创建深层嵌套的字典

时间:2017-11-30 07:56:42

标签: python dictionary

我目前正在努力解决一个问题。我有一个文件,每行包含一个5个字母的单词。让我们说例如单词是 你好 海拉 相形见绌 桩

我正在尝试创建一个嵌套字典,每个键对应于单词中的字母。例如,使用这些单词,输出将是。

{'H':{'e':{'l':{'l':{'o':'Hello','a':'Hella'}}}}, 'P':{'a':{'l':{'e':

{'s':'Pales'}}}, 'i':{'l':{'e':{'s':'Piles}}}}}

我尝试了一些几乎可以工作的代码,但是没有产生正确的结果。

T={}

for w in wordsFile:
        T[list(w)[0]]={list(w)[1]:{list(w)[2]:{list(w)[3]:{list(w)[4]:w}}}}
return(T)

有谁知道更好的方法来做到这一点。我只是不太确定要解决这个问题。

提前致谢!

1 个答案:

答案 0 :(得分:1)

以下代码应该完成它的工作:

def add_to_dict(dictionary, word):
    current_dict = dictionary
    for i, letter in enumerate(word):
        if i == len(word) - 1:
            current_dict[letter] = word
        else:
            if not letter in current_dict:
                current_dict[letter] = {}
            current_dict = current_dict[letter]

dictionary = {}

add_to_dict(dictionary, "Hello")
add_to_dict(dictionary, "Hella")

或者您可以使用defaultdict

from collections import defaultdict

def nested_dict():
    return defaultdict(nested_dict)

def add_to_dict(dictionary, word):
    current_dict = dictionary
    for i, letter in enumerate(word):
        if i == len(word) - 1:
            current_dict[letter] = word
        else:
            current_dict = current_dict[letter]

def to_dict(dictionary):
    dictionary = dict(dictionary)
    for key, value in dictionary.items():
        if isinstance(value, defaultdict):
            dictionary[key] = to_dict(value)

    return dictionary

dictionary = defaultdict(nested_dict)

add_to_dict(dictionary, "Hello")
add_to_dict(dictionary, "Hella")

dictionary = to_dict(dictionary)