我有这个输入,其中每个值的范围是 200:
d = {'600-800': 3, '1800-2000': 3, '1000-1200': 5, '400-600': 1, '2600-2800': 1}
我正在寻找这个预期的顺序:
{'400-600': 1, '600-800': 3, '1000-1200': 5, '1800-2000': 3, '2600-2800': 1}
已经尝试过类似的方法,但是顺序不对:
import collections
od = collections.OrderedDict(sorted(d.items()))
print od
最佳答案
您可以将键拆分为 '-'
部分,并使用第一部分作为整数值对其进行排序。由于键值的性质(当转换为整数时),第二部分与排序无关:
d = {'600-800': 3, '1800-2000': 3, '1000-1200': 5, '400-600': 1, '2600-2800': 1}
import collections
od = collections.OrderedDict(sorted(d.items(),key =lambda x: int(x[0].split("-")[0])))
print od
输出:
OrderedDict([('400-600', 1), ('600-800', 3), ('1000-1200', 5),
('1800-2000', 3), ('2600-2800', 1)])
独库:
相关:
- How to sort a list of objects based on an attribute of the objects?更多“按键排序”示例
- Are dictionaries ordered in Python 3.6+? .. 这让您可以从 3.7+(或 3.6 CPython)上省略 OrderedDict
关于python - 用数字表示按键排序字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54389040/