Python中对含Unicode键的字典按键排序(OrderedDict失效问题)
解决Unicode字典按键排序的问题
其实这锅真不怪Unicode~你遇到的问题本质是Python2里普通字典本身是无序的,直接把它转成OrderedDict只会保留原字典的遍历顺序,而不是按键排序。不用修改原字典的类型,只需要先对字典的键排序,再基于排序后的键构建OrderedDict就行,具体步骤如下:
具体实现代码
- 先导入
OrderedDict:
from collections import OrderedDict
- 直接使用你拿到的原字典:
your_dict = {u'010-010': u'010-010_comp_v000', u'012-010': u'012-010_comp_v002', u'007-010': u'007-010_comp_v000', u'006-010': u'006-010_comp_v009', u'005-010': u'005-010_comp_v002'}
- 对字典的键进行排序:
sorted_keys = sorted(your_dict.keys())
- 基于排序后的键构建有序字典:
sorted_ordered_dict = OrderedDict((key, your_dict[key]) for key in sorted_keys)
验证结果
此时打印sorted_ordered_dict,就能得到你期望的顺序:
OrderedDict([(u'005-010', u'005-010_comp_v002'), (u'006-010', u'006-010_comp_v009'), (u'007-010', u'007-010_comp_v000'), (u'010-010', u'010-010_comp_v000'), (u'012-010', u'012-010_comp_v002')])
整个过程不需要修改原字典的类型,完全基于原字典的数据生成有序版本,完美符合你的需求~
内容的提问来源于stack exchange,提问作者Kevin Lemaire
相关产品推荐
相关产品推荐

