Om de lengte van een woordenboek te berekenen, kunnen we de ingebouwde len()-methode van Python gebruiken. De len()-methode retourneert het aantal sleutels in a Python-woordenboek .
Python Dict len()-syntaxis
Syntaxis: len(dict)
Opbrengst: Het retourneert een geheel getal dat de lengte van de tekenreeks is.
Name:Steve Age:30 Designation:Programmer>
Basisvoorbeeld van het vinden van de lengte van een woordenboek
Python3
dict1>=>{>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> print>(>'Dictionary:'>, dict1)> print>(>'Length of dictionary:'>,>len>(dict1))> |
>
>
Uitgang:
Dictionary: {'Name': 'Steve', 'Age': 30, 'Designation': 'Programmer'} Length of dictionary: 3> Lengte van genest woordenboek zoeken
Overweeg de volgende details over een persoon:
Name:Steve Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Probleem bij het zoeken naar de lengte van het geneste woordenboek:
Python3
# A nested dictionary> dict2>=> {># outer dictionary> >'Name'>:>'Steve'>,> >'Age'>:>30>,> >'Designation'>:>'Programmer'>,> >'address'>: {># inner dictionary> >'Street'>:>'Brigade Road'>,> >'City'>:>'Bangalore'>,> >'Country'>:>'India'> >}> }> print>(>'len() method :'>,>len>(dict2))> print>(>'len() method with keys() :'>,>len>(dict2.keys()))> print>(>'len() method with values():'>,>len>(dict2.values()))> |
>
>
Uitgang:
len() methode met sleutels() : 4
len() methode met waarden(): 4
Welke methode u ook toepast, u krijgt hier slechts ‘4’ als uitvoer. Maar het werkelijke aantal inzendingen is ‘7’. De sleutels zijn naam, leeftijd, aanduiding, adres, straat, stad en land. De methode beschouwt het buitenste woordenboek, dat een waarde is voor een van de sleutels, als een enkele waarde.
Om dit probleem op te lossen, moeten we expliciet de lengte van het binnenste woordenboek optellen bij het buitenste. Het kan worden gecodeerd zoals hieronder aangegeven:
Python3
np-vulling
# A nested dictionary> dict2>=>{> >'Name'>:>'Steve'>,> >'Age'>:>30>,> >'Designation'>:>'Programmer'>,> >'address'>:> >{> >'Street'>:>'Brigade Road'>,> >'City'>:>'Bangalore'>,> >'Country'>:>'India'> >}> >}> # total length = length of outer dict +> # length of inner dict> length>=> len>(dict2)>+>len>(dict2[>'address'>])> print>(>'The length of the nested dictionary is:'>, length)> |
>
>
Uitgang:
The length of the nested dictionary is: 7>
Nu werkt het prima!!! Is het echter mogelijk om expliciet te programmeren dat elke keer de lengte van de interne woordenboeken wordt toegevoegd? Wat als we vooraf niet weten hoeveel innerlijke woordenboeken er zijn? Beschouw nu het volgende detail:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Hier hebben we twee innerlijke woordenboeken. Het is geen geoptimaliseerde manier om elke keer expliciet de lengte van de interne woordenboeken toe te voegen. We kunnen dit probleem oplossen door de isinstance()-methode te combineren met de len()-methode. Het idee is om eerst de lengte van het hele woordenboek in een variabele op te slaan (zeg hier ‘lengte’) . Doorloop vervolgens alle waarden() van het woordenboek en controleer of het een exemplaar van dict is. Als 'WAAR' vervolgens wordt de lengte van dat innerlijke woordenboek gevonden en aan de variabele toegevoegd lengte . Op deze manier kon de totale lengte van een genest woordenboek worden gevonden.
Voorbeeld 1: De lengte van een genest woordenboek dynamisch vinden met behulp van een for-loop:
Wanneer we meer sleutels in een woordenboek hebben waarvan de waarden weer woordenboeken zijn. Vervolgens moeten we controleren of het type waarde van elke sleutel is, als het een woordenboek is, dan gebruiken we len() op de waarde en voegen we de waarde toe aan de lengte van het buitenste woordenboek.
Python3
# nested dictionary> dict2>=>{> >'Name'>:> >{> >'first_name'>:>'Steve'>,> >'Last_name'>:>'Jobs'> >},> >'Age'>:>30>,> >'Designation'>:>'Programmer'>,> >'address'>:> >{> >'Street'>:>'Rockins Road'>,> >'City'>:>'Bangalore'>,> >'Country'>:>'India'> >}> >}> # storing the outer dictionary length> length>=> len>(dict2)> # iterating to find the length> # of all inner dictionaries> for> i>in> dict2.values():> ># checking whether the value is a dictionary> >if> isinstance>(i,>dict>):> >length>+>=> len>(i)> > print>(>'The length of the dictionary is'>, length)> |
>
>
Uitgang:
The length of the dictionary is 9>
Opmerking: Deze aanpak werkt alleen als de nesting van de woordenboeken slechts maximaal 2 niveaus bedraagt.
Als het woordenboek verder diep genest is, zoals hieronder:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street: St_number:4 St_name:Brigade Road City:Bangalore Country:India>
Voorbeeld 2: Recursie gebruiken om de lengte van het geneste woordenboek te vinden:
Hier hebben we een recursieve functie count_nested_len() gebruikt om de lengte van elk woordenboek te tellen. We herhalen de sleutels van woordenboeken, zodra een waarde een woordenboek is, gebruiken we dat woordenboek.
Python3
json in json-voorbeeld
# nested dictionary> dict2>=>{> >'Name'>:> >{> >'first_name'>:>'Steve'>,> >'Last_name'>:>'Jobs'> >},> >'Age'>:>30>,> >'Designation'>:>'Programmer'>,> >'address'>:> >{> >'Street'>:> >{> >'st_number'>:>4>,> >'st_name'>:>'Rockins Road'> >},> >'City'>:>'Bangalore'>,> >'Country'>:>'India'> >}> >}> # we use recursive function to count> # length of nested dictionaries> def> count_nested_len(d):> >length>=> len>(d)> >for> key, value>in> d.items():> >if> isinstance>(value,>dict>):> >length>+>=> count_nested_len(value)> >return> length> print>(>'Nested dictionary length:'>,> >count_nested_len(dict2))> |
>
>
Uitgang:
Nested dictionary length: 11>
Benadering 3: Woordenboekbegrip gebruiken
Python3
# genest woordenboek
dict2 ={
'Naam':
{
‘voornaam’:’Steve’,
‘Achternaam’: ‘Vacatures’
},
‘Leeftijd’:30,
‘Aanduiding’:’Programmeur’,
'adres':
{
'Straat':
{
‘st_nummer’:4,
‘st_name’:’Rockins Road’
},
‘Stad’: ‘Bangalore’,
‘Land’: ‘India’
}
}
# Woordenboekbegrip gebruiken om de lengte van het geneste woordenboek te vinden
lengte = len({k: v voor k, v in dict2.items()})
print(De lengte van het woordenboek is, lengte)
#Deze code is bijgedragen door Edula Vinay Kumar Reddy
METHODE 4: Een generatorexpressie gebruiken met de functie sum().
BENADERING:
Er wordt een generatorexpressie gebruikt om een reeks 1-en te maken, waarbij elke 1 overeenkomt met een sleutel in het woordenboek. De functie sum() wordt vervolgens gebruikt om de 1-en bij elkaar op te tellen, wat de lengte van het woordenboek oplevert.
ALGORITME:
1. Maak een generatorexpressie die een reeks 1-en genereert voor elke sleutel in het woordenboek.
2. Gebruik de functie sum() om de 1-en in de reeks bij elkaar op te tellen.
3. Geef de som terug, die de lengte van het woordenboek vertegenwoordigt.
Python3
dict1>=> {>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> length>=> sum>(>1> for> key>in> dict1)> print>(length)> |
>
>Uitvoer
3>
De tijdscomplexiteit van deze benadering is O(n), waarbij n het aantal sleutels in het woordenboek is.
De ruimtecomplexiteit van deze benadering is O(1)