Funkcja sortująca słownik w Pythonie

Data: 2018-01-03, autor: Michał Misztal

A takiej rzeczy to w Pythonie chyba nie ma a szkoda. Czasem trzeba wyliczyć wystąpienia konkretnej wartości i poukładać to alfabetycznie lub zgodnie z kolejnością.

Także tym razem przydatny skrypcik który to zrobi z automatu. Przynajmniej nie będę musiał go szukać po całym świecie bo będzie tutaj



p1 = {'a' : [6,6], 'b' : 15, 'c': 45, 't':1, 'y':4}
p2 = {'a':'a','m':'m','k':'k'}
p3 = {'a' : 6, 'b' : 15, 'c': 45, 't':1, 'y':4}

def sortuj(sl, sort='desc'):
    t = {}
    wartosci = list(sl.values())
    if sort == 'asc':
        try:
            wartosci.sort(reverse=True)
        except TypeError:
            return sl
    else:
        try:
            wartosci.sort()
        except TypeError:
            return sl
    while len(wartosci) > 0:
        w = wartosci.pop()
        for k, v in sl.items():
            if v == w:
                t[k]=v
                continue
    return t

print(sortuj(p1,'asc'))
print(sortuj(p2))
print(sortuj(p3,'asc'))

No i na wyjściu mamy

{'a': [6, 6], 'b': 15, 'c': 45, 't': 1, 'y': 4}
{'m': 'm', 'k': 'k', 'a': 'a'}
{'t': 1, 'y': 4, 'a': 6, 'b': 15, 'c': 45}

Jak widać w pierwszej liście gdy wartości nie można posortować bo to np tablica to zwracana jest oryginalna lista. Można to rozszerzyć o sortowanie rekurencyjne ale chyba nie ma potrzeby. Ewentualnie jak będę miał taką potrzebę to coś naskrobę.

Skomentuj lub zgłoś błąd

© Michał Misztal 2018

Czytasz właśnie

Funkcja sortująca słownik w Pythonie
Autor: Michał Misztal
Data: 2018-01-03

Podobne wpisy