2016-04-13 5 views
0

Я полностью потерял мнение о том, почему я продолжаю получать ошибки. Я пытаюсь напечатать названия книг, перечисленных в алфавитном порядке, используя 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)) 

Спасибо за любую помощь!

ответ

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) 

Вы можете разработать ключ, если вы действительно думаете, что у вас есть дубликаты названий.

Смежные вопросы