通过匹配Python中的属性来压缩对象列表

时间:2016-01-15 10:58:01

标签: python python-2.7

我有一个对象列表,我想要"压缩"根据匹配属性(id)将对象列入较小的对象列表。

class Event:
    def __init__(self, id, type, flag):
        self.id = id
        self.type = type
        self.flag = flag

eventlist = [
    Event("12345", "A", 1),
    Event("12345", "B", None),
    Event("67890", "A", 0),
    Event("67890", "B", None)]

如何获得看起来像这样的新列表?它应该优先于None定义的值,而忽略属性type

compressed = [
    Event("12345", 1),
    Event("67890", 0)]

编辑:更好的问题here。这可以删除......

1 个答案:

答案 0 :(得分:1)

试一试。它应该工作。

eventDict={}
for e in eventlist:
     eventdict[e.id]=e.flag if e.flag is not None else eventDict[e.id]
compressed = [Event(k, None, v) for k,v in eventdict.items()]