ネストされた辞書についての方法は次のとおりです。
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'}},
これは明らかに間違っています。なにが問題ですか?