Python 从文本文件创建深度嵌套词典
我目前正在努力解决一个问题。我有一个文件,每行包含一个5个字母的单词。例如,让我们说单词是 你好 海拉 苍白 堆 我试图创建一个嵌套字典,每个键对应于单词中的字母。例如,有了这些单词,输出将是Python 从文本文件创建深度嵌套词典,python,dictionary,Python,Dictionary,我目前正在努力解决一个问题。我有一个文件,每行包含一个5个字母的单词。例如,让我们说单词是 你好 海拉 苍白 堆 我试图创建一个嵌套字典,每个键对应于单词中的字母。例如,有了这些单词,输出将是 {'H':{'e':{'l':{'l':{'o':'Hello','a':'Hella'}}}}, 'P':{'a':{'l':{'e': {'s':'Pales'}}}, 'i':{'l':{'e':{'s':'Piles}}}}} 我尝试了一些几乎可以工作的代码,但没有产生正确的结果 T={}
{'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)
有人知道更好的方法吗。我只是不太确定如何着手解决这个问题
提前谢谢 以下代码应完成其工作:
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)
当我运行这段代码时,输出不是一个简单的字典。我不太清楚如何解释输出。。。字典在那里,但每个键之间都是defaultdict(是的。这些是
defaultdict
的实例。它的类型不同,但其行为类似于dict。我已经更新了答案,现在返回值只包含纯dict。