python 可分组字典 对象按属性分组成字典,python字典,[Python]代码cl


[Python]代码

class GroupDict(defaultdict):    def __init__(self, default_factory=list):        '''        @param default_factory: default value generator        '''        super(GroupDict, self).__init__(default_factory)        default_value_type = default_factory if default_factory else list        if issubclass(default_value_type, list) :            self._add_function = default_value_type.append        elif issubclass(default_value_type, set):            self._add_function = default_value_type.add    def append_2_value_collection(self, k, value):        '''        @param k: the key         @param value: the value to add to self[k]         @return: self         @attention: it's important to return self         '''        self._add_function(self[k], value)        return self

[Python]代码

class Person(object):    def __init__(self,first_name,last_name):        self.first_name =first_name        self.last_name = last_name    def __repr__(self):        return u"first name :" + unicode(self.first_name) \            + u" ; last name :" + unicode(self.last_name)a1 = [Person(u"liu", u"xing"), Person(u"liu", u"xu"), Person(u"zhang", u"xing")]a2 = [Person(u"liu", u"qin"), Person(u"li", u"jun"), Person(u"zhang", u"hua")]

[Python]代码

d = reduce(lambda d, per:d.append_2_value_collection(per.first_name, per), a1, GroupDict())

评论关闭