2015-06-10 2 views
-2
def class ObjClass: 
    attr1; 
    attr2; 
    attr3; 
    attr4; 
    attr5; 

    def __init__(self): 
     print("Some logic goes here") 

В другом .py файлеобъекты группы, если несколько атрибутов одинаковы в питона

obj1 = obj.objClass(); 
obj1.attr1 = foo 
obj1.attr2 = bar (..... so on and so forth) 

objList = [] 
objList.append(obj1) 
objList.append(obj2) 
objList.append(obj3) 
objList.append(obj4) 
objList.append(obj5) 

Теперь все объекты, которые есть в этом списке, я хочу, чтобы сгруппировать те, которые имеют один и тот же attr1, attr2, attr3, но разные attr4 и attr5. Как мне это сделать?

Что такое питонический способ сделать это. Я знаю, как это сделать, используя списки, но не используя объекты.

ответ

0
def grouper(objs, attr_name): 
    group =[] 
    for obj in objs: 
     if hasattr(obj, attr_name): 
      group.append(obj) 
    return group 

Возвращает список объектов - с выбранным вами атрибутом, равным требуемому значению.

+0

Я хочу сгруппировать объекты с одинаковыми атрибутами. (не сравнить атрибут с некоторым значением). Извините, если мое более раннее описание не было ясным. Я изменил его. – newbie

+0

Вместо этого используется вместо 'hasttr'. Если вы запустите это на всех интересующих вас атрибутах, вы можете установить сложение и вычитание в списках, чтобы найти набор, который вы ищете. – John

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