как отсортировать значения в словаре?

Пусть имеется словарь:

{'+7': 2345678901, '+4': 3456789012, '+5': 5678901234, '+12': 78901234}

Необходимо вывести телефонные номера по убыванию чисел, указанных в ключах, то есть, в порядке:

+4, +5, +7, +12

пробовал использовать функцию sorted(), но ничего не получалось


Ответы (2 шт):

Автор решения: GrAnd

Если требуется отсортировать ключи как числа, то в процедуре сортировки надо превратить эти строки в числа.

d = {'+7': 2345678901, '+4': 3456789012, '+5': 5678901234, '+12': 78901234}

# сортированный список кортежей
print([(k,v) for k,v in sorted(d.items(), key=lambda x: (int(x[0][1:]), x[1]))])

# сортированный новый словарь
print({k:v for k,v in sorted(d.items(), key=lambda x: (int(x[0][1:]), x[1]))})
→ Ссылка
Автор решения: user2240578

Немного меньше оверхеда, но тож самое, что и у предыдущего оратора:

>>> d={'+7': 2345678901, '+4': 3456789012, '+5': 5678901234, '+12': 78901234}
>>> dict(sorted(d.items(), key=lambda x: int(x[0])))
{'+4': 3456789012, '+5': 5678901234, '+7': 2345678901, '+12': 78901234}
→ Ссылка