我有一个字典,它看起来像这样,并且已经是构造函数的一部分:
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 '的原始值的情况下显示和引用它。如果需要的话,我还必须练习从列表中添加和删除属性,因此需要属性,而不仅仅是属性-如果我误解了这个想法,请纠正我。)我查找了一堆资源,解释如何使用key,value方法遍历字典,如-
def books(self):
for (key,value) in self.__books :
return "{0} : {1}".format(key,value)
所有我得到的是一个错误消息,说编译器'不能unpack非可迭代int对象'
我确实理解1001是一个int,因此当过程开始时的问题,但我无法弄清楚如何引用该索引项的值,当键是一个整数(键已经给出区分索引值-我不知道这样的键将被称为什么,即,像一个"索引键"或"索引器"可能?)也许是原始字典的格式"self"。
任何帮助都将是感激的,并提前感谢您花时间阅读这篇文章。
必须按dict进行迭代:
for key in self.__books:
return "{0} : {1}".format(key,self.__books[key])
def books(self):
for (key,value) in self.__books.items() :
return "{0} : {1}".format(key,str(value).replace('{','').replace(''','').replace('}',''))
我想这个会成功的。
字典有用于迭代的keys()和items()方法。在本例中,字典中的条目是另一个字典,请尝试如下操作:
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))