【发布时间】:2018-09-12 03:53:51
【问题描述】:
如何从下面的列表中创建一个实例变量,其中包含一个名为 price 的字典键,我正在尝试使用一个名为 Library 的类检索所有书籍的价格表
1 ) 这是书籍清单及其详细信息
data = { "books" : [ { "number_of_pages" : 849,
"price" : 13.550000000000001,
"publish_date" : 2011,
"subjects" : [ "Time travel",
"Assassination"
],
"title" : "11/22/63"
},
{ "number_of_pages" : 732,
"price" : 7.9900000000000002,
"publish_date" : 1999,
"subjects" : [ "Authors",
"Custody of children",
"Grandfathers",
"Haunted houses",
"Novelists",
"Trials (Custody of children)",
"Widowers",
"Widows",
"Writer's block"
],
"title" : "Bag of bones"
},]}
2 ) 我创建了一个名为 Library 的类,它将解压列表并存储变量
class Library:
def __init__(self,**kwargs):
for k, v in kwargs.items():
setattr(self, k, v)
#print(k,v)
if 'price' in v[0:][1]:
for c in v[0:][1].items():
if 'price' in c:
self.price=c['price']
def price_book(self):
return self.price
def __float__(self):
return self.price
Libra = Library(**data)
Price=Libra.price_book()
print(Price)
在尝试使用实例返回时,它会重新调整为价格设置变量的错误?
如何设置实例变量并检索库中的价格列表?
问候
更新 1:
self.price=c['price']
TypeError:元组索引必须是整数或切片,而不是 str
更新 2:
class Library:
def __init__(self,**kwargs):
for k, v in kwargs.items():
setattr(self, k, v)
self.price = []
for k, v in kwargs.items():
for i in range(len(v)):
self.price.append(v[i]['price'])
def price_book(self):
return self.price
def discount_book(self):
self.price=self.price
return list(map((lambda x: x -2), self.price))
def __float__(self):
return self.price
Libra = Library(**data)
Price=Libra.price_book()
Pri=Libra.discount_book()
print(Price)
print(Pri)
【问题讨论】:
-
你让我们猜测错误是什么以及在哪里。编辑您的问题以包含完整的错误消息。
-
你可选地在
self上设置price属性但总是在price_book方法中读取它。您的代码可能导致 AttributeError -
@JohnGordon ,更新
-
@GrijeshChauhan ,是的,我想正确设置它,但选项用完了
-
v[0:][1]与v[1]相同,顺便说一句。
标签: python python-3.x dictionary