閱讀我去嵌套字典的方法是這樣的:大廈嵌套的字典中一行行從文件
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'}},
這顯然是不正確的。哪裏不對?
'{frontpage:0.7,{troubleshooting:0.97}}'不是有效的字典。字典只能有鍵值對;你有一個鍵值對加上一個無鍵值。 (如果你想'{'frontpage':(0.7,{'troubleshooting':0.97})}',你需要圍繞該元組的parens。) – abarnert
我想我解決了它,一個捲曲丟失了。而且,它們當然是字符串。 – PascalVKooten
另外,用'is'比較字符串是一件冒險的事情。你一定會放棄它,特別是因爲沒有實習的機會非常渺茫,但你不應該指望這一點。 – abarnert