我完全迷失了为什么我一直都会遇到错误。我正在尝试使用sorted()按字母顺序打印所列书籍的标题。
我一直收到这个错误:
sorted(BSI, key = list(Book))
TypeError: 'type' object is not iterable
然后这是代码
from collections import namedtuple
Book = namedtuple('Book', 'author title genre year price instock')
BSI = [Book ("J.K. Rowling", "Harry Potter", "Fantasy", "2005", 12.00 , "34"),
Book ("Dr. Seuss", "Green Eggs and Ham", "Children's", "2000", 8.00 , "12"),
Book ("Margaret Mitchell", "Gone with the Wind", "Fiction", "1980", 9.00, "30"),
Book ("John Green", "The Fault in our Stars", "Fiction", "2010", 13.00, "23"),
Book ("Stephanie Meyer", "Twilight", "Fantasy", "2008", 15.00, "8"),
Book ("Suzanne Collins", "The Hunger Games", "Fantasy", "2005", 17.00, "18")]
for x in BSI:
print (x.title)
y = BSI
for x in BSI:
sorted(BSI, key = list(Book))
感谢您的帮助!
答案 0 :(得分:1)
问题在于list(Book)
。书是一种类型。以下可能是您想要的。
from collections import namedtuple
Book = namedtuple('Book', 'author title genre year price instock')
BSI = [
Book ("J.K. Rowling", "Harry Potter", "Fantasy", "2005", 12.00 , "34"),
Book ("Dr. Seuss", "Green Eggs and Ham", "Children's", "2000", 8.00 , "12"),
Book ("Margaret Mitchell", "Gone with the Wind", "Fiction", "1980", 9.00, "30"),
Book ("John Green", "The Fault in our Stars", "Fiction", "2010", 13.00, "23"),
Book ("Stephanie Meyer", "Twilight", "Fantasy", "2008", 15.00, "8"),
Book ("Suzanne Collins", "The Hunger Games", "Fantasy", "2005", 17.00, "18"),
]
for x in BSI:
print (x.title)
print()
for x in sorted(BSI, key=lambda x: x.title):
print(x.title)
如果您认为自己可能有重复的标题,则可以详细说明该键。