Python | Získejte klíč z hodnoty ve Slovníku
Podívejme se, jak získat klíč podle hodnoty v Python Dictionary.
Příklad: Jednořádkový kód
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> )])> |
Výstup:
Java
Extrahujte klíč z Python Dictionary pomocí Value
Metoda 1: Získejte klíč podle hodnoty pomocí porozumění seznamu
Porozumění seznamu se skládá ze závorek obsahujících výraz, který se provádí pro každý prvek spolu s cyklem for pro iteraci každého prvku v seznamu Python a získání klíče z hodnoty v Slovník .
Python3
dic> => {> 'geeks'> :> 'A'> ,> 'for'> :> 'B'> ,> 'geeks'> :> 'C'> }> value> => {i> for> i> in> dic> if> dic[i]> => => 'B'> }> print> (> 'key by value:'> ,value)> |
Výstup:
key by value: {'for'} Časová náročnost: NA)
Pomocný prostor: O(1)
Metoda 2: Získejte klíč podle hodnoty pomocí list.index()
The metoda index(). vrátí index odpovídající hodnoty v seznamu. Zde použitý přístup spočívá v nalezení dvou samostatných seznamů klíčů a hodnot. Poté získejte klíč pomocí pozice hodnoty v seznamu val_list. Jako klíč na libovolné pozici v seznamu klíčů bude mít N odpovídající hodnotu na pozici N v seznamu hodnot.
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])> |
Výstup:
java
Časová složitost: O(1)
Pomocný prostor: O(1)
Metoda 3: Získejte klíč podle hodnoty pomocí dict.item()
Klíč můžeme také načíst z hodnoty tak, že všechny hodnoty porovnáme pomocí dict.item() a poté vytiskneme odpovídající klíč k dané hodnotě.
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> ))> |
Výstup
Java C
Časová složitost: O(n), kde n je počet párů klíč–hodnota ve slovníku.
Pomocný prostor: O(1), protože prostor použitý funkcí nezávisí na velikosti vstupního slovníku.
Metoda 4: Použití lambda a filter()
Zde je příklad použití funkce filter() k získání klíče odpovídající hodnotě ve slovníku:
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> |
Výstup
Java
V tomto příkladu je funkce filter() použita k vytvoření seznamu klíčů z my_dict, kde je hodnota rovna 100. Výsledný seznam je pak indexován na pozici 0, aby se získal první prvek, což je klíč odpovídající hodnotě 100.
Časová složitost: O(n) , protože funkce filter() potřebuje iterovat celý slovník, aby vytvořila seznam klíčů.
Pomocný prostor je O(n) , protože seznam klíčů vytvořený pomocí filter() má velikost rovnou počtu prvků ve slovníku.
METODA 5: Metoda použití položek
Tento kód najde klíč dané hodnoty ve slovníku pomocí porozumění seznamu k iteraci položek ve slovníku a kontrole, zda hodnota odpovídá dané hodnotě. Pokud je klíč nalezen, je přidán do seznamu a první prvek seznamu je vytištěn jako klíč pro danou hodnotu. Pokud hodnota není ve slovníku nalezena, vytiskne se hlášení, že nebyla nalezena.
kroky:
- Použijte metodu items slovníku k procházení každého páru klíč-hodnota v my_dict.
- Zkontrolujte, zda se hodnota spojená s aktuálním klíčem rovná dané hodnotě.
- Pokud se rovná, připojte aktuální klíč k seznamu klíčů.
- Pokud se smyčka dokončí bez nalezení odpovídající hodnoty, vytiskněte zprávu, že hodnota nebyla nalezena.
- Pokud byl nalezen odpovídající klíč, vytiskněte první klíč v seznamu.
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'> )> |
Výstup
The key for the value 112 is Python
Časová složitost: O(N), kde n je počet párů klíč–hodnota ve slovníku.
Pomocný prostor: O(K) , kde k je počet klíčů, které odpovídají dané hodnotě.
METODA 6: Použití modulu re
Program používá modul re v Pythonu k nalezení klíče ve slovníku, který odpovídá dané hodnotě. Vytvoří vzor regulárního výrazu, který odpovídá hodnotě ohraničené hranicemi slov, a poté pomocí funkce next() iteruje položky ve slovníku a hledá hodnotu, která odpovídá vzoru. Pokud je nalezena shoda, program vrátí odpovídající klíč.
ALGORITMUS:
- Vytvořte vzor regulárního výrazu, který odpovídá hodnotě, kterou hledáme, obklopený hranicemi slov.
- Pomocí funkce next() můžete iterovat položky ve slovníku a hledat hodnotu, která odpovídá vzoru.
- Pokud je nalezena shoda, vraťte odpovídající klíč. Jinak vraťte None.
Python3
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)> |
Výstup
Java
Časová složitost: O(N), Vytvoření vzoru regulárního výrazu trvá O(1) čas. Hledání hodnoty, která odpovídá vzoru v každé položce slovníku, trvá v nejhorším případě O(n) čas, kde n je počet položek ve slovníku. Funkce next() a příkaz if zabírají čas O(1). Celková časová náročnost programu je tedy O(n).
Pomocný prostor: O(1), Vzor regulárního výrazu a klíčová proměnná vyžadují mezeru O(1). Proměnná vzor a výraz generátoru uvnitř funkce next() vyžadují mezeru O(1). Proměnné kav použité ve výrazu generátoru nevyžadují další prostor, protože jsou vytvořeny jako součást iterace. Celková prostorová složitost programu je tedy O(1).