mik*_*ike 2 python sorting dictionary
我有一个python字典,如下所示:
{'666 -> 999': 4388, '4000 -> 4332': 4383, '1333 -> 1665': 7998, '5666 -> 5999': 4495, '3666 -> 3999': 6267, '3000 -> 3332': 9753, '6333 -> 6665': 7966, '0 -> 332': 877}
Run Code Online (Sandbox Code Playgroud)
键显然都是字符串,但每个键都描绘了一系列数字.我想要做的是根据密钥中的第一个数字对该字典进行排序.有这么快的方法吗?只是在字典上使用sorted并没有帮助,因为字符串"666"在词法上大于字符串"1000".谢谢你的任何建议
Mar*_*ers 10
使用排序键:
sorted(yourdict, key=lambda k: int(k.split()[0]))
Run Code Online (Sandbox Code Playgroud)
这将返回一个键列表,在键的第一部分以数字方式排序(在空格上拆分).
演示:
>>> yourdict = {'666 -> 999': 4388, '4000 -> 4332': 4383, '1333 -> 1665': 7998, '5666 -> 5999': 4495, '3666 -> 3999': 6267, '3000 -> 3332': 9753, '6333 -> 6665': 7966, '0 -> 332': 877}
>>> sorted(yourdict, key=lambda k: int(k.split()[0]))
['0 -> 332', '666 -> 999', '1333 -> 1665', '3000 -> 3332', '3666 -> 3999', '4000 -> 4332', '5666 -> 5999', '6333 -> 6665']
Run Code Online (Sandbox Code Playgroud)
将键和值排序在一起:
sorted(yourdict.items(), key=lambda item: int(item[0].split()[0]))
Run Code Online (Sandbox Code Playgroud)
这会产生键值对:
>>> sorted(yourdict.items(), key=lambda item: int(item[0].split()[0]))
[('0 -> 332', 877), ('666 -> 999', 4388), ('1333 -> 1665', 7998), ('3000 -> 3332', 9753), ('3666 -> 3999', 6267), ('4000 -> 4332', 4383), ('5666 -> 5999', 4495), ('6333 -> 6665', 7966)]
Run Code Online (Sandbox Code Playgroud)
你可以生成一个collections.OrderedDict()对象:
>>> from collections import OrderedDict
>>> OrderedDict(sorted(yourdict.items(), key=lambda item: int(item[0].split()[0])))
OrderedDict([('0 -> 332', 877), ('666 -> 999', 4388), ('1333 -> 1665', 7998), ('3000 -> 3332', 9753), ('3666 -> 3999', 6267), ('4000 -> 4332', 4383), ('5666 -> 5999', 4495), ('6333 -> 6665', 7966)])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
964 次 |
| 最近记录: |