我遇到了一个问题,我想在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进行排序并将其打印以匹配上述输出?
祝你有个美好的一天,谢谢。
答案 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])