文本文件(.csv文件可以作为文本文件处理)中保存了图书馆藏书信息,每条藏书记录占一行 数据字段说明: LIBRARY_ID:藏馆ID(可能有多个藏馆) REC_CTRL_I:录入编号 BOOK_BARCO:图书条码 DEPARTMENT:所属部门 BOOK_SEARC:索书号 TITLE:图书名称 ISN:ISBN出版号 AUTHORS:作者 PUBLISHER:出版社 PUBDATE_DA:出版时间 BOOK_ATTRI:图书属性 BOOK_STATU:图书状态 用函数定义不用pandas,按照该藏书数量降序输出,如果数量相同按照出版社名字升序
时间: 2023-08-18 11:09:31 浏览: 41
好的,以下是一个可能的解决方案:
```python
def sort_books_by_count(file_path):
library_dict = {}
with open(file_path, 'r') as f:
next(f) # 跳过文件头
for line in f:
fields = line.strip().split(',')
library_id = fields[0]
book_statu = fields[-2]
publisher = fields[-3]
if book_statu == '在馆':
if library_id not in library_dict:
library_dict[library_id] = {}
if publisher not in library_dict[library_id]:
library_dict[library_id][publisher] = 0
library_dict[library_id][publisher] += 1
sorted_list = sorted(
[(lib_id, pub, count) for lib_id, pub_dict in library_dict.items() for pub, count in pub_dict.items()],
key=lambda x: (-x[2], x[1])
)
return sorted_list
```
这个函数接受一个文件路径作为输入,返回一个按照藏书数量降序排列的元组列表。每个元组包含三个元素:藏馆ID、出版社名字、该出版社藏书数量。如果数量相同,则按照出版社名字升序排列。将该函数保存到一个名为`sort_books_by_count`的Python文件中,然后在需要调用它的地方导入即可。