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 - Fatal编程技术网

Python 如何根据列表中的值对字典键进行排序

Python 如何根据列表中的值对字典键进行排序,python,sorting,dictionary,Python,Sorting,Dictionary,我有一本字典: my_dict = { 'key1': [v1,v2,v3], 'key2': [v1,v2,v3], 'key3': [v1,v2,v3] } 如何根据列表中的v3项对my_dict中的键进行排序?v3是一个浮点值 我的解决方案: 我创建了一个嵌套的列表 new_list = [[Key1,v3],[key2,v3],[key3,v3]] 然后根据v3元素对列表进行排序。 后来我使用了for循环: for each in new_list:

我有一本字典:

my_dict = {
    'key1': [v1,v2,v3],
    'key2': [v1,v2,v3],
    'key3': [v1,v2,v3]
}
如何根据列表中的
v3
项对
my_dict
中的键进行排序?
v3
是一个浮点值

我的解决方案: 我创建了一个嵌套的列表

new_list = [[Key1,v3],[key2,v3],[key3,v3]]
然后根据v3元素对列表进行排序。 后来我使用了for循环:

for each in new_list:
     for i in my_dict:
        if each[0] == i:
           new_orderedDict[i] = my_dict[i]
通过这种方式,我使用有序字典获得了已排序的键


有什么最佳方法吗?

首先,我必须指出,由于您是StackOverflow的新手,您需要尝试解决问题,并展示您的尝试。其次,
dict
s在Python中并没有真正的“顺序”——一个
dict
基本上只是一个哈希表

但是,a(结合)可以做您想做的事情:

返回dict子类的实例,支持常用的dict方法。OrderedDict是一种记录键首次插入顺序的dict。如果新条目覆盖现有条目,则原始插入位置保持不变。删除条目并重新插入会将其移动到末尾

下面是一个例子:

In [130]: from collections import OrderedDict
Out[130]:
In [131]: OrderedDict(sorted(my_dict.iteritems(), key=lambda (k,v): v[2]))
Out[131]:
OrderedDict([('key3', [0.12, 0.33, 0.971]),
             ('key1', [6.5, 0.7, 2.101]),
             ('key2', [0.1, 1.112, 3.14159])])

你已经试过什么了?欢迎使用Stack Overflow,但请务必意识到这不是一个代码编写服务。相反,首先你尝试,然后我们帮助。还有一个问题是,基本字典没有排序顺序,因此在
my_dict
中对它们进行排序并不是特别有意义。这可能对你没有意义@Jenner,但我与此有关it@sunilpawarJenner Felton说的是你不能对dicts排序,因为它们是无序的。如果您使用的是OrderedICT,请说明。不管怎么说,既然你没有表现出努力去做你自己想做的任何事情,也没有屈尊解释
我和它有什么关系
的意思,你就不会得到答案。请回答您的问题,并解释您对dict排序的意思,以及显示您迄今为止尝试的内容、预期输出、实际输出(如果有)以及任何错误或回溯的全文。