у меня есть настройки питонов словаря как такСортировка ключей словаря на основе их значений
mydict = { 'a1': ['g',6],
'a2': ['e',2],
'a3': ['h',3],
'a4': ['s',2],
'a5': ['j',9],
'a6': ['y',7] }
мне нужно написать функцию, которая возвращает упорядоченные ключи в списке, в зависимости от того, какого столбца вашей сортировки так, например, если мы сортировка mydict [ключ] [1] (по возрастанию)
я должен получить список назад, как так
['a2', 'a4', 'a3', 'a1', 'a6', 'a5']
в основном это работает, кроме, когда у вас есть столбцы одного и та же в lue для нескольких ключей, например. '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)
Итак, любые предложения?
Пол
вам просто нужно использовать 'key' kwarg функции сортировки – ulidtko