Sorting Python Dictionary based on Key?
我创建了一个python字典,它的键的形式如下:
1
| 11, 10, 00, 01, 20, 21, 31, 30 |
键是字符串
我想将我的字典按以下顺序维护:
1
| 00, 10, 20, 30, 01, 11, 21, 31 |
这是基于键的第二个值。
我试了一下这个sorted(dict.items(), key = lambda s: s[1]),得到了如下的钥匙:
1
| 20, 30, 21, 31, 01, 11, 10, 00 |
有人能指导我吗?
- 你考虑过使用订单信息技术吗?
- 这个问题绝对是重复的。我甚至不知道我见过多少次。
- 你好。items返回元组列表,其中第一项是键,第二项是值。因此,如果您希望按键对它们进行排序,您应该使用已排序的键(dict.items(),key=lambda s:s[0]),但是在这种情况下,如果您希望按示例11、10、00、01、20、21、31、30中的顺序进行排序,您将获得按升序排序的键,我希望按以下排序顺序维护我的字典:00、10、20、30、01、11、21、31uld在排序函数sorted(dict.items(),key=lambda s:"".join(reversed(s[0]))中反转键)
您几乎已经拥有了它,但关键是元组的第一项:
1
| sorted(dict.items(), key=lambda s: s[0]) |
- 我读到"键的第二个值"可能是:s[0][1]
- @乔克门茨:啊,说得对。谢谢。
- 使用key=lambda (key, val): key[1]只是为了使其明确化,也不会有什么坏处。
- @我认为这不是有效的lambda语法。
- 这是允许的…
- @Minitech是有效的语法。和def myfunc(key, val): return key[1]一样
- @琼斯门特:啊,不是在Python3下。
- @海德罗:不,实际上是图普解包。
- @米尼奇。那就不理我。逃离
- @jon是允许的,但它为元组指定了键:(lambda函数,val)。它不是真正有效的lambda语法,除非您希望key是lambda和val的元组,这显然不是sort-function关键字参数的情况。
- 现在不是时候有人建议使用operator.itemgetter来摆脱lambda混乱了吗?P
字典使用了一种称为散列的东西,不能这样排序。您所能做的就是使用dict.keys().sort(key = lambda s: s[1])并从那里迭代或继续。
- 这不会达到你的期望。清单的.sort方法对现有清单进行操作,该清单是短暂的。下次你得到dict.keys()时,它将不会被排序。它不会是同一个列表。
- 是的,你是对的!x = dict.keys()然后x.sort(...)谢谢!