我使用嵌套字典的方式是这样的:
dicty = dict()
tmp = dict()
tmp["a"] = 1
tmp["b"] = 2
dicty["A"] = tmp
dicty == {"A" : {"a" : 1, "b" : 1}}
当我尝试在一个大文件上实现这一点时,问题就开始了,逐行读取。这是打印列表中每行的内容:
['proA', 'macbook', '0.666667']
['proA', 'smart', '0.666667']
['proA', 'ssd', '0.666667']
['FrontPage', 'frontpage', '0.710145']
['FrontPage', 'troubleshooting', '0.971014']
我想得到一个嵌套字典(忽略小数):
{'FrontPage': {'frontpage': '0.710145', 'troubleshooting': '0.971014'},
'proA': {'macbook': '0.666667', 'smart': '0.666667', 'ssd': '0.666667'}}
当我逐行阅读时,我必须检查文件中是否仍然找到第一个单词(它们都已分组),然后再将其作为完整的字典添加到更高的字典中。
这是我的实现:
def doubleDict(filename):
dicty = dict()
with open(filename, "r") as f:
row = 0
tmp = dict()
oldword = ""
for line in f:
values = line.rstrip().split(" ")
print(values)
if oldword == values[0]:
tmp[values[1]] = values[2]
else:
if oldword is not "":
dicty[oldword] = tmp
tmp.clear()
oldword = values[0]
tmp[values[1]] = values[2]
row += 1
if row % 25 == 0:
print(dicty)
break #print(row)
return(dicty)
我实际上想在熊猫中使用它,但现在如果它可以用作字典,我会很高兴。出于某种原因,在阅读了前 5 行之后,我最终得到:
{'proA': {'frontpage': '0.710145', 'troubleshooting': '0.971014'}},
这显然是不正确的。怎么了?