Сортировать alphanumeri c словарь ключей на основе только цифры c часть в ключе - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть словарь, подобный приведенному ниже:

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

Я хочу, чтобы ключи сортировались в следующем порядке:

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

Я попытался использовать split() в функции lambda, а затем отсортировал числовую часть c, но она не сработала. Кто-нибудь, кто имеет лучшую идею, как сортировать это?

(Примечание): я использую Python2. Также я не хочу естественной сортировки.

1 Ответ

0 голосов
/ 14 февраля 2020

Сортировка, которую вы используете в своих комментариях, определяет сортировку по 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
...