2016-04-10 84 views
0

我不確定以前是否詢問過此問題,但找不到任何幫助。 我正在構建一個遊戲,其中有一個兩維對象列表,我們可以稱它們爲inventoryloot。我需要比較他們,看看我已經擁有哪些。項目是一個列表,我們有名字,數量和描述。比較二維列表對象

我想這樣

ownd = [] 
for item in self.inv: 
    if item[0].name in loot: 
     ownd.append(item) 

不過,我應該比較項目[0]項[0] INV,但我有一個brainblock或東西,因爲我無法弄清楚如何做到這一點。有人能幫助或推動我走向正確的方向嗎?謝謝!!

ps。我知道你們中有些人認爲這是一個愚蠢的簡單問題,但嚴重的是我被卡住了,需要幫助!

編輯:從類

更多代碼:

class Inventory(object): 

    inv = [] 

    def __init__(self, name): 
     self.ownr = name 
     self.loc = "player_data/" + name 

    def add_item(self, item, amount): 
     for obj in self.inv: 
      if obj[0].name == item.name: 
       obj[1] = obj[1] + amount 
       return 1      
     self.inv.append([item, amount]) 
     return 0 

    def compare_to_loop(self, loot, amount): 
     ownd = [] 
     for item in self.inv: 
      if item[0].name in loot: 
       ownd.append(item) 
     return ownd 
+0

「自我」來自哪裏? Cam你發佈了一些'inv'和'loot'數據結構的例子嗎? –

+0

你想如何比較內部列表?是由某個元素還是全部? – RobertR

+0

注意到我錯誤地複製了部件,現在已更正。 我想要做的是比較名稱,並選擇具有相同名稱的項目列表 – Duzzz

回答

0

如果我正確理解你的問題,你必須列出清單和搶劫,並要建立與所有元素擁有一個新的列表你可以在兩個列表中找到相同的位置?

然後這應該工作

inv = [1, 2, 3, 4, 5] 
loot = [2, 1, 3, 4, 6] 
owned = [i for i, l in zip(inv, loot) if i == l] 

在這個例子中所有的應該是[3,4]?