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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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_Python 2.7_Dictionary - Fatal编程技术网

基于关键字对Python字典进行排序?

基于关键字对Python字典进行排序?,python,sorting,python-2.7,dictionary,Python,Sorting,Python 2.7,Dictionary,我创建了一个python字典,它的键如下: 11, 10, 00, 01, 20, 21, 31, 30 这些键是字符串 我想按以下顺序维护我的词典: 00, 10, 20, 30, 01, 11, 21, 31 这是基于键的第二个值 我尝试了排序(dict.items(),key=lambda s:s[1]),得到了如下键: 20, 30, 21, 31, 01, 11, 10, 00 有人能给我指点路吗?你差点就拿到了,但钥匙是元组的第一项: sorted(dict.items(),

我创建了一个python字典,它的键如下:

11, 10, 00, 01, 20, 21, 31, 30
这些键是字符串

我想按以下顺序维护我的词典:

00, 10, 20, 30, 01, 11, 21, 31 
这是基于键的第二个值

我尝试了排序(dict.items(),key=lambda s:s[1]),得到了如下键:

20, 30, 21, 31, 01, 11, 10, 00

有人能给我指点路吗?

你差点就拿到了,但钥匙是元组的第一项:

sorted(dict.items(), key=lambda s: s[0])

字典使用一种叫做散列的东西,它不能按这种方式排序。您可以使用
dict.keys().sort(key=lambda s:s[1])
进行迭代或继续操作。

您考虑过使用吗?这个问题肯定是重复的。:)我都数不清我看过多少次了
items
返回元组列表,其中第一项是键,第二项是值。因此,如果您想按键对它们进行排序,您应该使用sorted(dict.items(),key=lambda s:s[0]),但在本例中,如果您想按示例11、10、00、01、20、21、31、30>进行排序,则会对键进行升序排序。我希望按照这些排序顺序维护我的字典:00、10、20、30、01、11、21,31您应该在排序函数sorted(dict.items(),key=lambda s:''.join(reversed(s[0]))中反转您的键。我读到“键的第二个值”可能是:
s[0][1]
@JonClements:Ah,很好。谢谢。使用
key=lambda(key,val):key[1]
只是为了说明这一点也没什么坏处。现在不是有人建议使用
操作符的时候了。itemgetter
只是为了摆脱lambda的混乱吗P@anu当前位置在撰写本文时未订购dicts。在Python3.7中,您可以将此表达式包装在
dict()
中以再次获取dict。这不会达到预期效果。对列表进行排序的
.sort
方法对就地列表进行操作,并且该列表是短暂的。下次获取dict.keys()时,它将不会被排序。它不会是同一个列表。是的,你是对的
x=dict.keys()
然后
x.sort(…)
谢谢!