2013-11-21 3 views
1

У меня есть следующий словарь, и я хочу заказать его по возрастанию с помощью клавиш.Python: Сортировка словаря с помощью клавиш в порядке возрастания

animMeshes = { "anim 0" : 23, "anim 32": 4, "anim 21" : 5, "anim 2" : 66, "anim 11" : 7 , "anim 1" : 5} 

Я попытался с помощью:

for mesh,val in sorted(animMeshes.items(), key=lambda t: t[0]): 
    print mesh 

о/р:

anim 0 
anim 1 
anim 11 
anim 2 
anim 21 
anim 32 

Как я мог получить:

anim 0 
anim 1 
anim 2 
anim 11 
anim 21 
anim 32 

ответ

3

Для вашего конкретного случая, это может работать:

for mesh,val in sorted(animMeshes.items(), key=lambda t: int(t[0].split()[1])): 
    print mesh 

Почему? потому что ваши ключи все начинаются с «anim», а затем имеют номер ...

Использовал преобразование в int() для сортировки по поведению чисел.

+1

Обратите внимание, что это не имеет ничего общего с ним являясь словарем, и только для того, чтобы использовать 'str (10) int (2)'. – colcarroll

+0

Вышеприведенный код работает. Awesome thanks :) – user3018319

+0

@JLLagrange, хорошая точка. Иногда указывать на очевидное должно быть первое, что нужно сделать! Благодарю. –

1

Вы просто должны разделить ключ и сортировки на основе целочисленного значения части числа, как этот

for mesh, val in sorted(animMeshes.items(), key=lambda t: int(t[0].split()[1])): 
    print mesh 

Выход

anim 0 
anim 1 
anim 2 
anim 11 
anim 21 
anim 32 
Смежные вопросы