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
java int jako řetězec
# 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.
čísla abecedy
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).