2016-04-10 7 views
0

これまでに質問されているかどうかはわかりませんが、ヘルプが見つかりませんでした。 私はオブジェクトの2次元リストを持っているゲームを構築しています。inventoryとと呼ぶことができます。私はそれらを比較し、私がすでに持っているものを見なければならない。アイテムは、名前、量、およびディスクリプションがあるリストです。2次元のリストオブジェクトを比較する

INVで、私はしかし、私は項目に[0]の項目を比較する必要があり

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

のようなものを考えていた

[0]が、私はこれを行う方法を見つけ出すことはできませんbrainblockか何か原因があります。誰か助けてくれるか、私を正しい方向へ押し込んでくれましたか?ありがとう!!

ps。私はあなたの人の一部が愚かな簡単な質問としてこれを参照してください知っているが真剣に私は立ち往生して助けが必要です!

EDIT:クラスから

もっとコード:

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

「self」はどこから来ますか?あなたは 'inv'と 'loot'データ構造のいくつかの例を投稿していますか? –

+0

どのように内部リストを比較したいですか?特定の要素によって、またはそれらのすべてによって? – RobertR

+0

部品を正しくコピーしていないことが判明しました。修正されました。 名前を比較し、同じ名前のアイテムをowndリストに追加することです。 – 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]でなければなりませんか?