如何在命令字典中更改顺序?



我有字典

from collections import OrderedDict 
md = {"r3":"piz","r1":"pic","r9":"piz","r12":"pic","r19":"lia","r2":"kurcc","r21":"jes","r99":"pic","r111":"kurcc","r116":"kurcc","r211":"ar","r221":"buc"}
print (OrderedDict(sorted(md.items(), key=lambda t: t[0])))

我想从最低数字排序。但我得到了

OrderedDict([('r1', 'pic'), ('r111', 'kurcc'), ('r116', 'kurcc'), ('r12', 'pic'), ('r19', 'lia'), ('r2', 'kurcc'), ('r21', 'jes'), ('r211', 'ar'), ('r221', 'buc'), ('r3', 'piz'), ('r9', 'piz'), ('r99', 'pic')])

我应该如何更改我的代码以具有 r1,r2,r3 顺序?

如果所有键的形式都是'r???'???整数,我们可以使用以下排序键:

OrderedDict(sorted(md.items(), key=lambda t:int(t[0][1:])))

所以在这里,我们首先像你自己一样t[0]拿钥匙。接下来,我们获取从索引 1 开始的子字符串(因此我们删除了'r'(,最后我们将其转换为int(..)以执行数值比较。

这将生成:

>>> OrderedDict(sorted(md.items(), key=lambda t: int(t[0][1:])))
OrderedDict([('r1', 'pic'), ('r2', 'kurcc'), ('r3', 'piz'), ('r9', 'piz'), ('r12', 'pic'), ('r19', 'lia'), ('r21', 'jes'), ('r99', 'pic'), ('r111', 'kurcc'), ('r116', 'kurcc'), ('r211', 'ar'), ('r221', 'buc')])

最新更新