logo

Pythona | Pobierz klucz z wartości w słowniku

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:

  1. Użyj metody items słownika, aby przejść przez każdą parę klucz-wartość w my_dict.
  2. Sprawdź, czy wartość skojarzona z bieżącym kluczem jest równa podanej wartości.
  3. Jeśli jest równy, dołącz bieżący klucz do listy kluczy.
  4. Jeśli pętla zakończy się bez znalezienia pasującej wartości, wypisz komunikat wskazujący, że wartość nie została znaleziona.
  5. 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:

  1. Utwórz wzorzec wyrażenia regularnego pasujący do szukanej wartości, otoczony granicami słów.
  2. Użyj funkcji next(), aby przeglądać elementy w słowniku w poszukiwaniu wartości pasującej do wzorca.
  3. 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).