排序和合并python dict的值

时间:2018-01-17 10:45:17

标签: python dictionary

我遇到了一个问题,我想在python 3.5中排序。 它看起来像:

d = {'automate': <Routing.Route.Route object at 0x2b7f84835c18>, 
    'index': <.Routing.Route.Route object at 0x2b7f8486e5c0>,
    'index_1': <Routing.Route.Route object at 0x2b7f8483d400>,
    'index_2': <Routing.Route.Route object at 0x2b7f84835f98>,
    'second': <Routing.Route.Route object at 0x2b7f8483d470>,
    'test_route_parameters': <Routing.Route.Route object at 0x2b7f8486e588>}

其中Route类具有name,package_name属性。

我想打印这个dict,如:

>> Package_name1:
     automate
     index
     index_1

   Package_name2:
     second
     index_2

   Package_name3:
     test_route_parameters

如何通过package_name对dict进行排序并将其打印以匹配上述输出?

祝你有个美好的一天,谢谢。

2 个答案:

答案 0 :(得分:1)

这样可以解决问题:

{v.package_name:[k for k in d if d[k].package_name==v.package_name] for v in d.values()}

答案 1 :(得分:0)

这应该有效。循环遍历字典并检查sorted_dict中是否存在值的包名。如果没有,请将列表作为值添加,将package_name作为键添加,然后将密钥附加到每个package_name。在O(n)中运行。

sorted_dict = {}
for key in d:
    if d[key] not in sorted_dict:
        sorted_dict[d[key].package_name] = []
sorted_dict[d[key].package_name].append(d[key])