我无法按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']}
谢谢!
答案 0 :(得分:2)
python版本中的字典< 3.6是无序的,排序和重新插入是没有意义的。
作为修复,
切换到python3.6(请记住caveats)或
使用OrderedDict
对于第二个选项,请将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__
可能不同,但后者仍然是字典,可以相应使用。