按字母顺序按键排序字典

时间:2017-08-18 12:15:18

标签: python python-3.x sorting python-3.5

我无法按dictionary的字母顺序对keys进行排序。

这是我的代码:

colorSizes = {'Rust': ['SIZE 8', 'SIZE 10', 'SIZE 12', 'SIZE 14', 'SIZE 16', 'SIZE 18'], 
              'Middle Blue': ['SIZE 8', 'SIZE 10', 'SIZE 12', 'SIZE 14', 'SIZE 16', 'SIZE 18'], 
              'Grey': ['SIZE 8', 'SIZE 10', 'SIZE 12', 'SIZE 14', 'SIZE 16', 'SIZE 18'], 
              'Aqua': ['SIZE 8', 'SIZE 10', 'SIZE 12', 'SIZE 14', 'SIZE 16', 'SIZE 18'], 
              'Navy': ['SIZE 8', 'SIZE 10', 'SIZE 12', 'SIZE 14', 'SIZE 16']}

realColor = {}
for key in sorted(colorSizes.keys()):
    realColor[key] = colorSizes.get(key)

print(realColor)

我得到了什么:

  

{' Yellow / Fuschia':[' Large',' Extra Large'],                 ' Black':' Small',' Medium'' Large']}

我想得到什么:

  

{' Black':' Small',' Medium',' Large'],' Yellow / Fuschia&# 39;:[' Large',' Extra Large']}

谢谢!

1 个答案:

答案 0 :(得分:2)

python版本中的字典< 3.6是无序的,排序和重新插入是没有意义的。

作为修复,

  1. 切换到python3.6(请记住caveats)或

  2. 使用OrderedDict

  3. 对于第二个选项,请将realColor = {}替换为collections.OrderedDict

    from collections import OrderedDict    
    realColor = OrderedDict()
    

    以下是OrderedDict如何记住插入顺序的示例:

    dict1 = {}
    dict1['k'] = 1
    dict1['aSDFDF'] = 1234
    
    print(dict1) # {'aSDFDF': 1234, 'k': 1}
    
    from collections import OrderedDict
    dict2 = OrderedDict()
    dict2['k'] = 1
    dict2['aSDFDF'] = 1234
    
    print(dict2) # OrderedDict([('k', 1), ('aSDFDF', 1234)])
    

    __repr__可能不同,但后者仍然是字典,可以相应使用。