Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:对嵌套字典进行排序_Python_Sorting_Dictionary_Nested - Fatal编程技术网

Python:对嵌套字典进行排序

Python:对嵌套字典进行排序,python,sorting,dictionary,nested,Python,Sorting,Dictionary,Nested,我想订购一些嵌套字典以匹配此列表的顺序: 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}} 我组织了代表年份的外键,包括:

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

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()))]
我只是不确定每年我是如何按照我的车型列表的顺序安排他们的钥匙的?
我可能是哑巴了

我们可以使用
听写理解
根据输入列表重新排列键

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 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}}

如果你想要一个像

{'Bike':{'2001',164',2012',4222',2018',2542},'Bus':{'2001',324,37,1653',2012',2018',汽车':{'2001',33432',2012',68122',2018',12127}
你应该写一些类似的东西

vehicles\u by\u type={}
对于年,车辆中的车辆年。项目()
对于车辆类型,车辆年份中的x。项目()
如果不是车辆类型,则按车辆类型:
按车辆类型划分的车辆[车辆类型]={}
按车辆类型划分的车辆[车辆类型]。更新({year,x})

如果你想要像这样的口述

{'Bike':{'2001',164',2012',4222',2018',2542},'Bus':{'2001',324,37,1653',2012',2018',汽车':{'2001',33432',2012',68122',2018',12127}
你应该写一些类似的东西

vehicles\u by\u type={}
对于年,车辆中的车辆年。项目()
对于车辆类型,车辆年份中的x。项目()
如果不是车辆类型,则按车辆类型:
按车辆类型划分的车辆[车辆类型]={}
按车辆类型划分的车辆[车辆类型]。更新({year,x})

给定一个dict
D
具有正确的钥匙,但顺序是任意的,
{key:D[key]for key in vehicle_type}
将以正确的顺序生成一个新dict。如果某些dict可能缺少钥匙(此代码将变成显式的
None
s),请更改为
{key:D.get(key)for…
。如果dict
D
具有正确的钥匙,但顺序是任意的,则
{key:D[key]for key in vehicle_type}
将以正确的顺序生成新的dict。更改为
{key:D.get>(键)对于…
如果某些dict可能缺少键(此代码将转换为显式
None
s)。这非常有效!与我尝试的方法非常接近哈它非常有效!与我尝试的方法非常接近哈哈