【问题标题】:Compare two files and make a list比较两个文件并列一个清单
【发布时间】:2012-05-06 21:29:26
【问题描述】:

我有两个文件要相互比较并形成一个列表。每个文件都有自己的类。书和人。在这些中,我有不同的属性。我要比较的是:person.personalcode == book.borrowed。从这里我想要一个所有借来的书的清单。我是这样开始的:

for person in person_list:
    for book in booklibrary_list:
        if person.personalcode == book.borrowed:
            person.books.append(book, person)

for person in person_list:
    if len(person.books) > 0:
        print(person.personalcode + "," + person.firstname + person.lastname + "have borrowed the following books: ")
        for book in person.books:
            print(book)

for person in person_list:
    person.books = []

但它不起作用,我错过了什么或做错了什么?

【问题讨论】:

  • person_list 是文件对象吗?如果是这样,person 是一个字符串,因此没有属性 personalcode
  • 发布它是如何不起作用的。如果有错误,请发布它。如果输出不是你所期望的,发布你得到的和你想要的。
  • person 是我的班级,personalcode 是属性。
  • 到目前为止看起来不错,可能是您对 Book 或 Person 类的编码方式存在问题。
  • 标题应该不是“比较两个文件...”,因为它与文件 IO 无关。

标签: python file list for-loop


【解决方案1】:

作为答案发布,因为这对于评论来说太长了。

首先:改进你的问题。展示如何构建 Person 和 Book 类,以及如何填充它们。描述个人代码是什么以及个人代码为何与书籍代码相同。一些示例数据和更多代码会使这个问题更容易回答。

第二:阅读您的other question,您似乎将数据存储在文本文件中,直接加载和查询,修改和保存数据。这会导致您遇到问题,您应该考虑采用以下两条线之一:

  1. 使用 SQL 数据库,可能最容易开始使用的是 SQLite,因为它不需要设置服务器并且有一个 module in the standard library that is very easy to use。在那里存储您的数据,从长远来看,您会发现它更容易。
  2. 使用 Python 对象(例如三个类:Person、Book 和 BorrowedBook),在程序中管理它们的列表,并使用标准库中的 shelve 在查询之间存储和检索这些对象列表。

如果您以前没有使用过 SQL,使用 shelve 会更容易,希望您原谅我说它可能非常适合与书籍相关的应用程序时的双关语!

【讨论】:

    猜你喜欢
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2021-04-27
    相关资源
    最近更新 更多