Laten we eens kijken hoe we de sleutel op waarde kunnen krijgen in Python Dictionary.
Voorbeeld: One-Liner-code
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>)])> |
>
>
Uitgang:
Java>
Extraheer de sleutel uit het Python-woordenboek met behulp van Waarde
Methode 1: Haal de sleutel op waarde op met behulp van lijstbegrip
Een lijstbegrip bestaat uit haakjes die de uitdrukking bevatten, die voor elk element wordt uitgevoerd, samen met de for-lus om over elk element in de Python-lijst te itereren om de sleutel uit een waarde in te halen Woordenboek .
Python3
dic>=>{>'geeks'>:>'A'>,>'for'>:>'B'>,>'geeks'>:>'C'>}> value>=> {i>for> i>in> dic>if> dic[i]>=>=>'B'>}> print>(>'key by value:'>,value)> |
>
>
Uitgang:
key by value: {'for'}> Tijdcomplexiteit: OP)
Hulpruimte: O(1)
Methode 2: Haal de sleutel op waarde op met behulp van een list.index()
De index() methode retourneert de index van de overeenkomstige waarde in een lijst. De hier gebruikte aanpak is het vinden van twee afzonderlijke lijsten met sleutels en waarden. Haal vervolgens de sleutel op met behulp van de positie van de waarde in de val_lijst. Omdat sleutel op elke positie N in sleutel_lijst een corresponderende waarde zal hebben op positie N in val_lijst.
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])> |
tekenreeks splitsen c++
>
>
Uitgang:
java>
Tijdcomplexiteit: O(1)
Hulpruimte: O(1)
Methode 3: Haal de sleutel op waarde op met dict.item()
We kunnen de sleutel ook uit een waarde halen door alle waarden te matchen met behulp van dict.item() en vervolgens de corresponderende sleutel af te drukken met de gegeven waarde.
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>))> |
>
>Uitvoer
Java C>
Tijdcomplexiteit: O(n), waarbij n het aantal sleutelwaardeparen in het woordenboek is.
Hulpruimte: O(1), aangezien de ruimte die door de functie wordt gebruikt niet afhankelijk is van de grootte van het invoerwoordenboek.
de cijfers van het alfabet
Methode 4: Lambda en filter() gebruiken
Hier is een voorbeeld van het gebruik van de functie filter() om de sleutel te verkrijgen die overeenkomt met een waarde in een woordenboek:
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> |
>
>Uitvoer
Java>
In dit voorbeeld wordt de functie filter() gebruikt om een lijst met sleutels te maken van my_dict waarbij de waarde gelijk is aan 100. De resulterende lijst wordt vervolgens geïndexeerd op positie 0 om het eerste element te verkrijgen, wat de sleutel is die overeenkomt met de waarde 100.
Tijdcomplexiteit: O(n) , omdat de functie filter() het hele woordenboek moet doorlopen om de lijst met sleutels te maken.
Hulpruimte is O(n) , omdat de lijst met sleutels gemaakt door filter() een grootte heeft die gelijk is aan het aantal elementen in het woordenboek.
METHODE 5: Methode met behulp van items
Deze code vindt de sleutel van een bepaalde waarde in een woordenboek door gebruik te maken van een lijstbegrip om de items in het woordenboek te doorlopen en te controleren of de waarde overeenkomt met de gegeven waarde. Als er een sleutel wordt gevonden, wordt deze aan een lijst toegevoegd en wordt het eerste element van de lijst afgedrukt als de sleutel voor de opgegeven waarde. Als de waarde niet in het woordenboek wordt gevonden, wordt er een bericht afgedrukt waarin wordt aangegeven dat deze niet is gevonden.
Stappen:
- Gebruik de itemsmethode van het woordenboek om elk sleutel-waardepaar in my_dict te doorlopen.
- Controleer of de waarde die aan de huidige sleutel is gekoppeld, gelijk is aan de opgegeven waarde.
- Als deze gelijk is, voegt u de huidige sleutel toe aan een lijst met sleutels.
- Als de lus wordt voltooid zonder een overeenkomende waarde te vinden, drukt u een bericht af waarin wordt aangegeven dat de waarde niet is gevonden.
- Als er een overeenkomende sleutel is gevonden, drukt u de eerste sleutel in de lijst af.
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'>)> |
>
>Uitvoer
The key for the value 112 is Python>
Tijdcomplexiteit: O(N), waarbij n het aantal sleutelwaardeparen in het woordenboek is.
Hulpruimte: O(K) , waarbij k het aantal sleutels is dat overeenkomt met de gegeven waarde.
METHODE 6:Re-module gebruiken
Het programma gebruikt de re-module in Python om de sleutel in een woordenboek te vinden die overeenkomt met een bepaalde waarde. Het creëert een reguliere-expressiepatroon dat overeenkomt met de waarde omgeven door woordgrenzen, en gebruikt vervolgens de functie next() om de items in het woordenboek te doorlopen en te zoeken naar een waarde die overeenkomt met het patroon. Als er een match wordt gevonden, retourneert het programma de bijbehorende sleutel.
ALGORITME:
- Creëer een reguliere-expressiepatroon dat overeenkomt met de waarde waarnaar we op zoek zijn, omgeven door woordgrenzen.
- Gebruik de functie next() om de items in het woordenboek te doorlopen, op zoek naar een waarde die overeenkomt met het patroon.
- Als er een match wordt gevonden, retourneer dan de bijbehorende sleutel. Anders retourneert u Geen.
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)> |
>
>Uitvoer
Java>
Tijdcomplexiteit: O(N), Het maken van het reguliere expressiepatroon kost O(1) tijd. Het zoeken naar een waarde die overeenkomt met het patroon in elk woordenboekitem kost in het ergste geval O(n) tijd, waarbij n het aantal items in het woordenboek is. De functie next() en de instructie if nemen elk O(1) tijd in beslag. Daarom is de totale tijdscomplexiteit van het programma O(n).
Hulpruimte: O(1), Het reguliere expressiepatroon en de sleutelvariabele vereisen elk een O(1)-spatie. De patroonvariabele en de generatorexpressie binnen de functie next() vereisen beide een O(1)-spatie. De k- en v-variabelen die in de generatorexpressie worden gebruikt, hebben geen extra ruimte nodig, omdat ze worden gemaakt als onderdeel van de iteratie. Daarom is de algehele ruimtecomplexiteit van het programma O(1).