在python中,如何对unicode内容的dict进行排序?
In python, how to order a dict with unicode content?
我有以下命令:
<type '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'}
我想按键订购。但是使用 Collections 和 OrderedDict,我无法让它工作。
OrderedDict([(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')])
我假设它链接到 unicode?有没有解决这个问题而不必重写字典的解决方案?这是另一个软件的输出,所以我不能轻易改变类型。
期望的输出是:'005-010'... '006-010'... '007-010'...
OrderDict
s 保留插入顺序 - 他们不会为您排序项目。您需要自己对它们进行排序:
d = {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'}
o = OrderedDict((k, v) for k, v in sorted(d.items()))
print(o)
我有以下命令:
<type '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'}
我想按键订购。但是使用 Collections 和 OrderedDict,我无法让它工作。
OrderedDict([(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')])
我假设它链接到 unicode?有没有解决这个问题而不必重写字典的解决方案?这是另一个软件的输出,所以我不能轻易改变类型。
期望的输出是:'005-010'... '006-010'... '007-010'...
OrderDict
s 保留插入顺序 - 他们不会为您排序项目。您需要自己对它们进行排序:
d = {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'}
o = OrderedDict((k, v) for k, v in sorted(d.items()))
print(o)