仅基于键中的数字部分对字母数字词典键进行排序

问题描述 投票:-1回答:1

我有一本类似以下的字典:

dictionary = {
  "sf_init#12" : "string",
  "sf_code#5" : "string",
  ...
}

我希望键按顺序排序:

  1. sf_code#5
  2. sf_init#12
  3. ...

我尝试在split()函数中使用lambda,然后对数字部分进行了排序,但是没有用。谁有更好的主意如何进行排序?

(注):我正在使用Python2。另外,我也不想自然排序。

python python-2.x
1个回答
0
投票

您在注释中使用的排序指定对键的第2个和第1个字符进行排序。这两个键均为'f', 's'。如果要按末尾的数字排序,则需要提取这些数字。尝试

dicts = {"sf_init#27": 'g', "sf_code#5" :'h'}
for i in sorted(dicts.keys(), key=lambda k: k.split('#')[-1], reverse=True):
    print (i)

输出

sf_code#5
sf_init#27
© www.soinside.com 2019 - 2024. All rights reserved.