【发布时间】:2014-08-25 20:07:32
【问题描述】:
我有一本这样结构的字典:
{
"Mark":
{
"surname":"Johnson",
"tags":
[
{
"name":"Salary",
"value":"5"
},
{
"name":"Car manufacturer",
"value":"Volvo"
}
]
},
"John":
{
"surname":"Doe",
"tags":
[
{
"name":"Salary",
"value":"10"
},
{
"name":"Car manufacturer",
"value":"Daewoo"
}
]
}
}
我想按名称为“汽车制造商”的标签值对该字典进行排序,以获得如下结果:
{
"Volvo":
{
[
"Mark":{...},...
]
},
"Daewoo":
{
["John":{...}]
}
}
有没有办法让它尽可能优雅?我可以通过创建几个嵌套循环来做到这一点(下面的示例),但它看起来很难看,而且可能效率不高。
cars = {}
for person in persons:
for tag in person['tags']:
if tag['name'] == 'Car manufacturer'
cars[tag['value']].append(item)
【问题讨论】:
-
这和你得到的一样好;这很尴尬,因为起始数据结构不是很好。
-
您不需要排序。您需要对数据进行某种转置。
标签: python list sorting dictionary