python 可分组字典 对象按属性分组成字典,python字典,[Python]代码cl
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())
评论关闭