Zobaczmy, jak uzyskać klucz według wartości w słowniku Pythona.
Przykład: kod jednowierszowy
Python3
# creating a new dictionary> my_dict>=>{>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> # one-liner> print>(>'One line Code Key value: '>,>list>(my_dict.keys())> >[>list>(my_dict.values()).index(>100>)])> |
>
>
co to znaczy xdxd
Wyjście:
Java>
Wyodrębnij klucz ze słownika Pythona za pomocą wartości
Metoda 1: Uzyskaj klucz według wartości, korzystając ze zrozumienia list
Rozumienie listy składa się z nawiasów zawierających wyrażenie, które jest wykonywane dla każdego elementu wraz z pętlą for w celu iteracji po każdym elemencie listy Pythona w celu uzyskania klucza z wartości w Słownik .
Python3
dic>=>{>'geeks'>:>'A'>,>'for'>:>'B'>,>'geeks'>:>'C'>}> value>=> {i>for> i>in> dic>if> dic[i]>=>=>'B'>}> print>(>'key by value:'>,value)> |
>
>
Wyjście:
key by value: {'for'}> Złożoność czasowa: NA)
Przestrzeń pomocnicza: O(1)
Metoda 2: Uzyskaj klucz według wartości za pomocą list.index()
The metoda indeksu(). zwraca indeks odpowiedniej wartości na liście. Zastosowane tutaj podejście polega na znalezieniu dwóch oddzielnych list kluczy i wartości. Następnie pobierz klucz za pomocą pozycja wartości na liście wartości. Ponieważ klucz w dowolnej pozycji N na liście kluczy będzie miał odpowiadającą wartość na pozycji N na liście wartości.
Python3
# creating a new dictionary> my_dict>=>{>'java'>:>100>,>'python'>:>112>,>'c'>:>11>}> # list out keys and values separately> key_list>=> list>(my_dict.keys())> val_list>=> list>(my_dict.values())> # print key with val 100> position>=> val_list.index(>100>)> print>(key_list[position])> |
>
cyfry alfabetu
>
Wyjście:
java>
Złożoność czasowa: O(1)
Przestrzeń pomocnicza: O(1)
Metoda 3: Uzyskaj klucz według wartości za pomocą dict.item()
Możemy także pobrać klucz z wartości, dopasowując wszystkie wartości za pomocą metody dict.item(), a następnie wypisując odpowiedni klucz do podanej wartości.
Python3
# function to return key for any value> def> get_key(val):> > >for> key, value>in> my_dict.items():> >if> val>=>=> value:> >return> key> >return> 'key doesn't exist'> # Driver Code> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> print>(get_key(>100>))> print>(get_key(>11>))> |
>
>Wyjście
Java C>
Złożoność czasowa: O(n), gdzie n jest liczbą par klucz-wartość w słowniku.
Przestrzeń pomocnicza: O(1), ponieważ przestrzeń zajmowana przez funkcję nie zależy od rozmiaru słownika wejściowego.
Metoda 4: Używanie lambdy i filter()
Oto przykład użycia funkcji filter() w celu uzyskania klucza odpowiadającego wartości w słowniku:
Python3
my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> # Get the key corresponding to value 100> key>=> list>(>filter>(>lambda> x: my_dict[x]>=>=> 100>, my_dict))[>0>]> print>(key)> #This code is contributed by Edula Vinay Kumar Reddy> |
>
>Wyjście
Java>
W tym przykładzie funkcja filter() służy do utworzenia listy kluczy z my_dict, gdzie wartość jest równa 100. Powstała lista jest następnie indeksowana na pozycji 0, aby uzyskać pierwszy element, którym jest klucz odpowiadający wartości 100.
Złożoność czasowa: O(n) , ponieważ funkcja filter() musi wykonać iterację po całym słowniku, aby utworzyć listę kluczy.
Przestrzeń pomocnicza to O(n) , ponieważ lista kluczy utworzona przez filter() ma rozmiar równy liczbie elementów w słowniku.
METODA 5: Używanie metody przedmiotów
Ten kod znajduje klucz danej wartości w słowniku, używając rozumienia listowego do iteracji po pozycjach w słowniku i sprawdzania, czy wartość pasuje do podanej wartości. Jeśli klucz zostanie znaleziony, zostanie on dodany do listy, a pierwszy element listy zostanie wydrukowany jako klucz dla podanej wartości. Jeżeli wartość nie zostanie znaleziona w słowniku, zostanie wydrukowany komunikat informujący, że nie została znaleziona.
Kroki:
- Użyj metody items słownika, aby przejść przez każdą parę klucz-wartość w my_dict.
- Sprawdź, czy wartość skojarzona z bieżącym kluczem jest równa podanej wartości.
- Jeśli jest równy, dołącz bieżący klucz do listy kluczy.
- Jeśli pętla zakończy się bez znalezienia pasującej wartości, wypisz komunikat wskazujący, że wartość nie została znaleziona.
- Jeśli znaleziono pasujący klucz, wydrukuj pierwszy klucz z listy.
Python3
# input list> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> value>=> 112> key_list>=> [key>for> key, val>in> my_dict.items()>if> val>=>=> value]> if> len>(key_list)>>0>:> >print>(>'The key for the value'>, value,>'is'>, key_list[>0>])> else>:> >print>(>'Value not found in dictionary'>)> |
>
>Wyjście
The key for the value 112 is Python>
Złożoność czasowa: O(N), gdzie n to liczba par klucz-wartość w słowniku.
Przestrzeń pomocnicza: O(K) , gdzie k jest liczbą kluczy pasujących do podanej wartości.
METODA 6: Używanie modułu re
Program wykorzystuje moduł re w Pythonie, aby znaleźć w słowniku klucz odpowiadający podanej wartości. Tworzy wzorzec wyrażenia regularnego pasujący do wartości otoczonej granicami słów, a następnie używa funkcji next() do iteracji po pozycjach w słowniku i wyszukiwania wartości pasującej do wzorca. Jeśli zostanie znalezione dopasowanie, program zwróci odpowiedni klucz.
ALGORYTM:
- Utwórz wzorzec wyrażenia regularnego pasujący do szukanej wartości, otoczony granicami słów.
- Użyj funkcji next(), aby przeglądać elementy w słowniku w poszukiwaniu wartości pasującej do wzorca.
- Jeśli zostanie znalezione dopasowanie, zwróć odpowiedni klucz. W przeciwnym razie zwróć Brak.
Python3
zamień całą Javę
import> re> # Given input> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> value>=> 100> # Program code> pattern>=> re.>compile>(r>''> +> str>(value)>+> r>''>)> key>=> next>((k>for> k, v>in> my_dict.items()>if> pattern.search(>str>(v))),>None>)> print>(key)> |
>
>Wyjście
Java>
Złożoność czasowa: O(N), Tworzenie wzorca wyrażenia regularnego zajmuje O(1) czasu. Wyszukiwanie wartości pasującej do wzorca w każdym elemencie słownika zajmuje w najgorszym przypadku czas O(n), gdzie n jest liczbą elementów w słowniku. Każda funkcja next() i instrukcja if zajmują O(1) czasu. Zatem całkowita złożoność czasowa programu wynosi O(n).
Przestrzeń pomocnicza: O(1), Wzorzec wyrażenia regularnego i zmienna kluczowa wymagają przestrzeni O(1). Zarówno zmienna wzorca, jak i wyrażenie generatora wewnątrz funkcji next() wymagają spacji O(1). Zmienne k i v użyte w wyrażeniu generatora nie wymagają dodatkowej przestrzeni, ponieważ są tworzone w ramach iteracji. Dlatego ogólna złożoność przestrzenna programu wynosi O (1).