2012-05-06 48 views
0

我有兩個文件,我想彼此比較並形成一個列表。每個文件都有自己的類。書和人。在這些,我有不同的屬性。我想比較的是: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 = [] 

但它不工作,我錯過了什麼或做錯了什麼?

+0

'person_list'是文件對象嗎?如果是這樣,'person'是一個字符串,因此沒有'personalcode'屬性。 –

+9

發佈它如何不起作用。如果有錯誤,請發佈。如果輸出結果不符合您的期望,請發佈您所得到的和您想要的。 – Daenyth

+0

人是我的班級,而personalcode是一個屬性。 – user1370721

回答

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,擱置的使用會更容易,而且我希望當我說它可能非常適合與書籍相關的應用程序時,您會原諒這個雙關語!

+0

+1爲擱置原因。 –