使用Python的zip和*对books_borrowed排序并保持isbn对应关联的问题
问题解决方案
你现有代码的逻辑是先将书名和ISBN配对后直接拆分,再单独对书名列表排序,排序操作不会同步修改ISBN列表的顺序,因此二者的对应关系会丢失。
正确的实现逻辑是:先对配对好的(书名, ISBN)元组整体按书名排序,保证每个元组内的两个值始终绑定,排序完成后再拆分两个列表即可。
修改后的代码如下:
# 配对书名与对应ISBN book_isbn_pairs = list(zip(books_borrowed, isbn)) # 对配对列表排序,Python默认按元组第一个元素(书名)的字母顺序排序 sorted_pairs = sorted(book_isbn_pairs) # 拆分排序后的配对列表,得到对应顺序的书名和ISBN book_sorted, isbn_sorted = zip(*sorted_pairs) # 如果需要列表类型的结果可以增加如下转换 # book_sorted = list(book_sorted) # isbn_sorted = list(isbn_sorted) print(book_sorted) print(isbn_sorted)
如果需要实现忽略大小写的字母排序,可以给sorted方法指定key参数:
sorted_pairs = sorted(book_isbn_pairs, key=lambda x: x[0].lower())
内容的提问来源于stack exchange,提问作者VALLAABAHH
相关产品推荐
相关产品推荐

