2016-04-10 6 views
0

Я не уверен, было ли это задано раньше, но я не нашел никакой помощи. Я создаю игру, в которой у меня есть два отдельных списка объектов, позволяет называть их inventory и loot. Мне нужно сравнить их и посмотреть, какие из них у меня уже есть. Элемент - это список, в котором у нас есть имя, количество и описание.Сравнение объектов двумерного списка

я что-то вроде

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

Однако думать, я должен сравнить элемент [0] для пункта [0] в инв, но у меня есть brainblock или что-то, потому что я не могу понять, как это сделать , Может ли кто-нибудь помочь или подтолкнуть меня к правильному направлению. Благодаря!!

пс. Я знаю, что некоторые из вас видят это как глупый легкий вопрос, но серьезно я застрял и нуждаюсь в помощи!

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]?

Смежные вопросы