Сортировка ключей словаря по их значениям

У меня есть такая настройка словаря Python

mydict = { 'a1': ['g',6],
           'a2': ['e',2],
           'a3': ['h',3],
           'a4': ['s',2],
           'a5': ['j',9],
           'a6': ['y',7] }

Мне нужно написать функцию, которая возвращает упорядоченные ключи в списке, в зависимости от того, в каком столбце выполняется сортировка, например, если мы сортируем по mydict [key] [1] (по возрастанию)

Я должен получить список примерно так

['a2', 'a4', 'a3', 'a1', 'a6', 'a5']

В основном это работает, за исключением случаев, когда у вас есть столбцы с одинаковым значением для нескольких ключей, например. 'a2': ['e', 2] и 'a4': ['s', 2]. В этом случае он возвращает список примерно таким образом

['a4', 'a4', 'a3', 'a1', 'a6', 'a5']

Вот функция, которую я определил

def itlist(table_dict,column_nb,order="A"):
    try:
        keys = table_dict.keys()
        values = [i[column_nb-1] for i in table_dict.values()]
        combo = zip(values,keys)
        valkeys = dict(combo)
        sortedCols = sorted(values) if order=="A" else sorted(values,reverse=True)
        sortedKeys = [valkeys[i] for i in sortedCols]
    except (KeyError, IndexError), e:
        pass
    return sortedKeys

И если я хочу отсортировать, например, по столбцу чисел, он называется так

sortedkeysasc = itmethods.itlist(table,2)

Итак, есть предложения?

Paul

17
задан ulidtko 21 January 2011 в 03:51
поделиться