Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/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_Dictionary - Fatal编程技术网

Python 如何按值对字典排序,其中键是元组

Python 如何按值对字典排序,其中键是元组,python,dictionary,Python,Dictionary,我有一本字典 d = {('08', '10010'):6, ('23', '10017'):6,('06444', '10028'): 6,('21', '10027'): 6} 我想按第二个值排序 如果我有一个项目(x,y):z,我需要它基于y 我做了类似的事情,但没有成功 print sorted(d, key=lambda item:item[0][1]) 有什么想法吗?差不多了 sorted(d,key=lambda x: x[1]) [('08', '10010'), ('23

我有一本字典

 d = {('08', '10010'):6, ('23', '10017'):6,('06444', '10028'): 6,('21', '10027'): 6}
我想按第二个值排序

如果我有一个项目
(x,y):z
,我需要它基于y

我做了类似的事情,但没有成功

print sorted(d, key=lambda item:item[0][1])
有什么想法吗?

差不多了

sorted(d,key=lambda x: x[1])
[('08', '10010'), ('23', '10017'), ('21', '10027'), ('06444', '10028')]
请注意,这是键的排序列表,而不是字典。要获得字典的完整视图(带值),请将
d
更改为
d.items()

存在两个问题:
1-要按键元组的第二个值排序,您忘记了.items()调用

>>> print sorted(d.items(), key=lambda item:item[0][1])
[(('08', '10010'), 6), (('23', '10017'), 6), (('21', '10027'), 6), (('06444', '10028'), 6)]
2-如果您需要一个dict,其中键按该标准排序,那么您需要一个对象,因为在默认dict中,键的顺序是不保证的

>>> print dict( sorted(d.items(), key=lambda item:item[0][1]))
{('23', '10017'): 6, ('21', '10027'): 6, ('08', '10010'): 6, ('06444', '10028'): 6}
>>> from collections import OrderedDict
>>> print OrderedDict( sorted(d.items(), key=lambda item:item[0][1]))
OrderedDict([(('08', '10010'), 6), (('23', '10017'), 6), (('21', '10027'), 6), (('06444', '10028'), 6)])

比我快几秒钟。:)你说“不成功”是什么意思?您期望的结果是什么,以及您得到的结果是什么?使用
itemegter
根据重复项排序(d,key=operator.itemgetter(1))