logo

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

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:

  1. Použijte metodu items slovníku k procházení každého páru klíč-hodnota v my_dict.
  2. Zkontrolujte, zda se hodnota spojená s aktuálním klíčem rovná dané hodnotě.
  3. Pokud se rovná, připojte aktuální klíč k seznamu klíčů.
  4. Pokud se smyčka dokončí bez nalezení odpovídající hodnoty, vytiskněte zprávu, že hodnota nebyla nalezena.
  5. 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:

  1. Vytvořte vzor regulárního výrazu, který odpovídá hodnotě, kterou hledáme, obklopený hranicemi slov.
  2. Pomocí funkce next() můžete iterovat položky ve slovníku a hledat hodnotu, která odpovídá vzoru.
  3. 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).