Wiem, że jest mnóstwo pytań na temat list sortowania/słowników Pythona, ale nie mogę znaleźć takiego, które pomaga w moim przypadku, i szukam najbardziej wydajnego rozwiązania, jak Będę sortować raczej duży zbiór danych.Sortowanie słownika krotek w języku Python
moje dane w zasadzie wygląda to w tej chwili:
a = {'a': (1, 2, 3), 'b': (3, 2, 1)}
Ja w zasadzie tworzenia listy słów, w której każde słowo przechowywać wraz z niektórych statystykach o nim (n, Sigma (x), Sigma (x^2))
Chcę go posortować według określonej statystyki. Dotychczas Próbowałem coś wzdłuż linii:
b = a.items()
b.sort(key = itemgetter(1), reverse=True)
Nie jestem pewien, jak kontrolować których indeks jest sortowane na podstawie gdy jej skutecznie listą krotek krotki? Sądzę, że muszę skutecznie zagnieździć dwie operacje itemgetter, ale nie jestem do końca pewien, jak to zrobić.
Jeśli istnieje lepsza struktura danych, której powinienem używać, proszę dać mi znać. Czy powinienem utworzyć małą klasę/strukturę, a następnie użyć funkcji lambda, aby uzyskać dostęp do członka klasy?
Wielkie dzięki
tak, idealny dzięki! Czytałem gdzieś, że itemgetter jest szybszy niż przy użyciu funkcji lambda, ponieważ skompilowano C? Jeśli nie mogę użyć itemgettera, to rozwiązanie jest w porządku. –
Nie przejmuj się wydajnością, dopóki nie masz działającego programu, wraz z testami jednostkowymi. Jeśli ostateczny, * poprawny *, program jest zbyt wolny, należy go profilować i zoptymalizować wolne bity. –
dobry punkt :) Mogę przepisać go w C, jeśli jest zbyt wolny mimo to, dzięki za wskazówki :) –