Mam konfiguracji słownika Python podobnie jakSortowanie klucze słownika w oparciu o ich wartości
mydict = { 'a1': ['g',6],
'a2': ['e',2],
'a3': ['h',3],
'a4': ['s',2],
'a5': ['j',9],
'a6': ['y',7] }
muszę napisać funkcję, która zwraca zamówionych kluczy na liście, w zależności od kolumny swój sortowanie tak na przykład jeśli mamy do sortowania na mydict [key] [1] (rosnąco)
powinienem otrzymać listę z powrotem jak tak
['a2', 'a4', 'a3', 'a1', 'a6', 'a5']
To głównie działa, oprócz kiedy masz kolumny o tej samej va Lue dla wielu kluczy, np. "a2": ["e", 2] i "a4": ["s", 2]. W tym przypadku zwraca lista jak tak
['a4', 'a4', 'a3', 'a1', 'a6', 'a5']
Oto funkcja Mam zdefiniowane
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
A jeśli chcę, aby posortować kolumny liczb, na przykład nazywa jak tak
sortedkeysasc = itmethods.itlist(table,2)
Jakieś sugestie?
Paul
wystarczy użyć 'key' kwarg funkcji sortowania – ulidtko