我有一本看起來像這樣的字典,并且已經是建構式的一部分:
self.__books = {
1001: {'title': 'Introduction to Programming', 'author': 'Farell', 'copies': 2},
1002: {'title': 'Database Concepts', 'author': 'Morris', 'copies': 5},
1003: {'title': 'Object Oriented Analysis', 'author': 'Farell', 'copies': 4},
1004: {'title': 'Linux Operating System', 'author': 'Palmer', 'copies': 2},
1005: {'title': 'Data Science using Python', 'author': 'Russell', 'copies': 4},
1006: {'title': 'Functional Programming with Python', 'author': 'Babcock', 'copies': 6}
}
我想要做的是列印字典,但以字串格式(例如 -
1001 : title: Introduction to Programming, author: Farell, copies: 2 (\n)
1002 : .... ( Hope you get the idea))
根據給出的問題,我必須創建一個名為 books 的屬性,該屬性獲取 'self.__books' 的值,以便將來可以在不更改 'self.__books' 的原始值的情況下顯示和參考它,以便如果需要,可以參考原始檔案(我還必須練習從串列中添加和洗掉,因此需要屬性而不僅僅是屬性 - 如果我誤解了這個想法,請糾正我。)我查了一堆資源解釋了如何使用 key,value 方法遍歷字典,如下所示 -
def books(self):
for (key,value) in self.__books :
return "{0} : {1}".format(key,value)
我得到的只是一條錯誤訊息,指出編譯器“無法解包不可迭代的 int 物件”
我確實知道 1001 是一個整數,因此在行程開始時會出現問題,但是當鍵是整數時,我無法弄清楚如何在該索引處參考專案的值(已經給出了鍵來區分索引值 - 我不知道這樣的鍵會被稱為什么,例如“索引鍵”或“索引器”?)也許原始詞典“self.__books”的格式以某種方式阻止了它?
任何幫助將不勝感激,并提前感謝您花時間閱讀本文。
uj5u.com熱心網友回復:
您必須按 dict 迭代為:
for key in self.__books:
return "{0} : {1}".format(key,self.__books[key])
uj5u.com熱心網友回復:
def books(self):
for (key,value) in self.__books.items() :
return "{0} : {1}".format(key,str(value).replace('{','').replace('\'','').replace('}',''))
我認為這會奏效。
uj5u.com熱心網友回復:
Dict 具有用于迭代的 keys() 和 items() 方法。在您的情況下,dict 中的專案是另一個 dict,請嘗試以下操作:
for k in self.__books.keys():
ls = self.__books[k]
ss = ""
i = 0
for j in ls.keys():
if i > 0:
ss = ss ", "
ss = ss str(j) ": " str(ls[j])
i = 1
print("{0} : {1}".format(k, ss))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/330473.html
上一篇:如何從字典中的串列中存盤多個值
