как отсортировать значения в словаре?
Пусть имеется словарь:
{'+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}