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排序的意思,以及显示您迄今为止尝试的内容、预期输出、实际输出(如果有)以及任何错误或回溯的全文。