Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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_Python 3.x_List_Sorting - Fatal编程技术网

Python 使用字典键值对列表进行排序

Python 使用字典键值对列表进行排序,python,python-3.x,list,sorting,Python,Python 3.x,List,Sorting,让我们假设我有一个列表 list_values = ['key3', 'key0', 'key1', 'key4', 'key2'] 还有一份命令 ordered_dict = OrderedDict([('key4', 0), ('key1', 1), ('key2', 2), ('key0', 3), ('key3', 4)]) 如何使用ordered\u dict键对list\u值进行相应排序 i、 e:-sorted_list=['key4','key1','key2','key0'

让我们假设我有一个列表

list_values = ['key3', 'key0', 'key1', 'key4', 'key2']
还有一份命令

ordered_dict = OrderedDict([('key4', 0), ('key1', 1), ('key2', 2), ('key0', 3), ('key3', 4)])
如何使用
ordered\u dict
键对
list\u值进行相应排序

i、 e:-
sorted_list=['key4','key1','key2','key0','key3']


编辑:既然几乎所有答案都能解决问题,那么最合适、最完美的python方法是什么?

调用
列表。排序
,传递自定义

list_values.sort(key=ordered_dict.get)    
list_values
# ['key4', 'key1', 'key2', 'key0', 'key3']

或者,使用

sorted(list_values, key=ordered_dict.get)
# ['key4', 'key1', 'key2', 'key0', 'key3']

如果我们假设列表是dict的子集:

list_values = ['key3', 'key1']

ordered_dict = OrderedDict([('key4', 0), ('key1', 1), ('key2', 2), ('key0', 3), ('key3', 4)])

output = [v for v in ordered_dict if v in list_values]

print(output)

例2:

list_values = ['key3', 'key0', 'key1', 'key4', 'key2']

ordered_dict = OrderedDict([('key4', 0), ('key1', 1), ('key2', 2), ('key0', 3), ('key3', 4)])

output = [v for v in ordered_dict if v in list_values]

print(output)


回复:编辑。通常,首选非lambda解决方案。我可以对每个解决方案进行细分,但如果您能根据数据对解决方案进行计时,并接受最快的解决方案,则对您更有说服力。哦,是的,当然。请注意,
list.sort
是一种就地方法,它速度更快,但也能将数据就地排序,因此请确保重置列表。嗯,这是迄今为止最好的答案。顺便说一句,在我的情况下,我将使用non-in-place选项,因为我想存储返回的排序列表。谢谢你,coldspeed
list_values = ['key3', 'key0', 'key1', 'key4', 'key2']

ordered_dict = OrderedDict([('key4', 0), ('key1', 1), ('key2', 2), ('key0', 3), ('key3', 4)])

output = [v for v in ordered_dict if v in list_values]

print(output)
['key4', 'key1', 'key2', 'key0', 'key3']