У меня есть задание провести инвентаризацию личных книг, мой лектор посоветовал мне использовать словарь. У меня есть два словаря с одинаковой структурой, но в одном есть все книги из этого (mainLib в коде) а другой - инвентарь, к которому пользователь добавляет (myLib). Я использовал original_title в качестве ключей для словаря.
Проблема в том, что этот код работает для сортировки названий книг по алфавиту в myLib, но когда я пытаюсь использовать более крупный словарь, mainLib, я получаю TypeError: '<' not supported between instances of 'float' and 'str'
. Я хочу отобразить все названия книг (ключи) в mainLib {} в алфавитном порядке в виджете «Вывод».
for b_ti, b_info in sorted(myLib.items()):
print(b_ti, " By ", b_info['authors'])
Это код, который я использовал для извлечения и записи данных в mainLib.
#col_list is used to select specific columns from the csv
col_list=["authors", "original_publication_year", "original_title", "image_url", "small_image_url"]
#the selected columns are mapped to data frame
df = pd.read_csv(r"books2.csv", usecols=col_list)
mainLib={} #books in the main library
myLib ={} #books in your personal inventory
#set it so that the keys in dictionary are book titles
mainLib=df.set_index('original_title').T.to_dict()
Этот код используется для добавления книг в myLib {}, возможно, он влияет на то, почему я могу отсортировать myLib {}. Книга - это название книги в mainLib {}.
#function to add book to your inventory
def addMyList(book):
mlsearch = book
val= mainLib.get(mlsearch)
keyslist= [key for(key,value) in mainLib.items() if value == val]
mykeys = keyslist[0]
myLib.update({ mykeys : val})
Вот как выглядят словари, я использовал myLib {}, так как он меньше. словарь myLib
Словарь myLib содержит только 5 книг, поэтому можно использовать сортировку? Есть ли другой способ сортировки по mainLib {} или это ограничение словарей?
Кроме того, если что-то выглядит не так, то это потому, что я новичок в python.
Спасибо