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

Python 基于另一个字典对字典进行排序

Python 基于另一个字典对字典进行排序,python,python-3.x,sorting,dictionary,Python,Python 3.x,Sorting,Dictionary,我有两本Python字典- dict1 = {'a' : [1, 2, 3], 'b' : [4, 5, 6], 'c' : [7, 8, 9]} dict2 = {'a' : 30, 'b' : 75, 'c' : 15} 我想根据dict2的值对dict1进行排序。 最后的答案应该是- [['c', [7, 8, 9]], ['a', [1, 2, 3]], ['b', [4, 5, 6]]] 解决这个问题最有效的方法是什么 您可以尝试以下方法: dict1 = {'a' : [1, 2

我有两本Python字典-

dict1 = {'a' : [1, 2, 3], 'b' : [4, 5, 6], 'c' : [7, 8, 9]}
dict2 = {'a' : 30, 'b' : 75, 'c' : 15}
我想根据dict2的值对dict1进行排序。 最后的答案应该是-

[['c', [7, 8, 9]], ['a', [1, 2, 3]], ['b', [4, 5, 6]]]
解决这个问题最有效的方法是什么

您可以尝试以下方法:

dict1 = {'a' : [1, 2, 3], 'b' : [4, 5, 6], 'c' : [7, 8, 9]}
dict2 = {'a' : 30, 'b' : 75, 'c' : 15}
new_data = list(map(list, sorted(dict1.items(), key=lambda x:dict2[x[0]])))
输出:

[['c', [7, 8, 9]], ['a', [1, 2, 3]], ['b', [4, 5, 6]]]
您可以尝试以下方法:

dict1 = {'a' : [1, 2, 3], 'b' : [4, 5, 6], 'c' : [7, 8, 9]}
dict2 = {'a' : 30, 'b' : 75, 'c' : 15}
new_data = list(map(list, sorted(dict1.items(), key=lambda x:dict2[x[0]])))
输出:

[['c', [7, 8, 9]], ['a', [1, 2, 3]], ['b', [4, 5, 6]]]

嗯。使用sorted并传递一个键函数,该函数知道如何获取排序依据的值。比如:

sorted(dict1.items(), key=lambda kv: dict2[kv[0]])

请注意,我将其保留为元组列表。如果你想要一本真正的字典,你必须使用OrderedDict。

是的。使用sorted并传递一个键函数,该函数知道如何获取排序依据的值。比如:

sorted(dict1.items(), key=lambda kv: dict2[kv[0]])

请注意,我将其保留为元组列表。如果你想从中得到一个真正的字典,你必须使用OrderedDict。

请注意,你的结果不再是一个dict,而是一个列表列表,如果你想对它进行排序,这会更好,因为dict中的顺序不能保证/实现细节

我会根据另一个字典中键的值对项目进行排序,并将项目产生的元组转换为2元素列表:

结果:

[['c', [7, 8, 9]], ['a', [1, 2, 3]], ['b', [4, 5, 6]]]

请注意,您的结果不再是一个dict,而是一个列表列表,如果您想对其进行排序,这会更好,因为dict中的顺序不能保证/实现细节

我会根据另一个字典中键的值对项目进行排序,并将项目产生的元组转换为2元素列表:

结果:

[['c', [7, 8, 9]], ['a', [1, 2, 3]], ['b', [4, 5, 6]]]

你能发布你的代码吗?你试过什么了吗?Python中的dict是没有顺序的。如果您想要一个有序的dict,可以使用OrderedDict from collections。然而,您的最终答案实际上是一个列表。Python中的普通dict没有顺序,因此您无法对它们进行排序。您必须使用yeah,但OP显示的是列表列表列表,而不是dict。您可以发布您的代码吗,您尝试过什么吗?Python中的dict没有排序。如果您想要一个有序的dict,可以使用OrderedDict from collections。然而,您的最终答案实际上是一个列表。Python中的普通dict没有顺序,因此您无法对它们进行排序。必须使用yeah,但OP显示的是列表列表列表,而不是dict。在lamba参数中添加了paren。请注意类似的内容。在这种情况下,您可以匿名化第二个参数,因为它没有被使用:key=lambda k,u:dict2[k]@DustinOprea。请正确测试你的代码。它目前在Python 3中引发了一个语法错误,OP正在使用它。@ekhumoro这只是一个即兴的建议。即使我在花一点时间给他策略的时候输入了错误的内容,这种方法也是有效的。再说一次,我是这样说的。请立即尝试。已将参数添加到lamba参数。请注意类似的内容。在这种情况下,您可以匿名化第二个参数,因为它没有被使用:key=lambda k,u:dict2[k]@DustinOprea。请正确测试你的代码。它目前在Python 3中引发了一个语法错误,OP正在使用它。@ekhumoro这只是一个即兴的建议。即使我在花一点时间给他策略的时候输入了错误的内容,这种方法也是有效的。再说一次,我是这样说的。现在试试。我可能会选择列表理解而不是列表映射…,可能:[[k,dict1[k]]对于sorteddict1.keys中的k,key=lambda x:dict2[x]]。我可能会选择列表理解而不是列表映射…,可能:[[k,dict1[k]]对于sorteddict1.keys中的k,key=lambda x:dict2[x]]。