Python:排序嵌套词典



我想订购一些嵌套字典,以匹配以下列表的顺序:

vehicle_type = ['Car', 'Bike', 'Bus']

这就是当前嵌套字典的样子:

vehicles = {'2018': {'Bike': 2542, 'Bus': 37, 'Car': 33432}, '2012': {'Car': 68122, 'Bike': 164, 'Bus': 1653}, '2001': {'Car': 12127, 'Bus': 324, 'Bike': 4222}}

我组织了代表年份的外部密钥:

ordered_dict = [(k, vehicles[k]) for k in sorted(list(vehicles.keys()))]

我只是不确定我每年是如何按照我的vehicle_type列表的顺序整理他们的钥匙的?我可能是个愚蠢的

我们可以使用dict comprehension根据您的输入列表重新排序键。

new_vehicles = {key: {d: v.get(d) for d in vehicle_type} for key, v in vehicles.items()}
new_vehicles
#{'2018': {'Car': 33432, 'Bike': 2542, 'Bus': 37}, '2012': {'Car': 68122, 'Bike': 164, 'Bus': 1653}, '2001': {'Car': 12127, 'Bike': 4222, 'Bus': 324}}

如果您想要像这样的dict

{'Bike': {'2001', 164, '2012', 4222, '2018', 2542}, 'Bus': {'2001', 324, 37, 1653, '2012', '2018'}, 'Car': {'2001', 33432, '2012', 68122, '2018', 12127}}

你应该写一些类似的东西

vehicles_by_type = {}
for year, vehicle_in_year in vehicles.items():
for vehicle_type, x in vehicle_in_year.items():
if not vehicle_type in vehicles_by_type:
vehicles_by_type[vehicle_type] = {}
vehicles_by_type[vehicle_type].update({year, x})

最新更新