Um die Länge eines Wörterbuchs zu berechnen, können wir die in Python integrierte len()-Methode verwenden. Die Methode len() gibt die Anzahl der Schlüssel in a zurück Python-Wörterbuch .
Python Dict len() Syntax
Syntax: len(Dikt)
MaurerformelZurückkehren: Es gibt eine Ganzzahl zurück, die der Länge der Zeichenfolge entspricht.
Name:Steve Age:30 Designation:Programmer>
Einfaches Beispiel für die Ermittlung der Länge eines Wörterbuchs
Python3
dict1>=>{>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> print>(>'Dictionary:'>, dict1)> print>(>'Length of dictionary:'>,>len>(dict1))> |
>
>
Ausgabe:
Dictionary: {'Name': 'Steve', 'Age': 30, 'Designation': 'Programmer'} Length of dictionary: 3> Ermitteln der Länge eines verschachtelten Wörterbuchs
Berücksichtigen Sie die folgenden Details zu einer Person:
Name:Steve Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Problem beim Ermitteln der Länge eines verschachtelten Wörterbuchs:
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()))> |
>
>
Ausgabe:
len()-Methode mit keys() : 4
len()-Methode mit Werten(): 4
Unabhängig davon, welche Methode Sie anwenden, erhalten Sie hier nur „4“ als Ausgabe. Die tatsächliche Anzahl der Einträge beträgt jedoch „7“. Die Schlüssel sind Name, Alter, Bezeichnung, Adresse, Straße, Stadt und Land. Die Methode betrachtet das äußere Wörterbuch, das einen Wert für einen der Schlüssel darstellt, als einen einzelnen Wert.
Um dieses Problem zu lösen, müssen wir die Länge des inneren Wörterbuchs explizit zum äußeren hinzufügen. Es kann wie folgt codiert werden:
Python3
# 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)> |
>
>
Ausgabe:
The length of the nested dictionary is: 7>
Jetzt funktioniert es einwandfrei!!! Ist es jedoch möglich, explizit so zu programmieren, dass die Länge der inneren Wörterbücher jedes Mal hinzugefügt wird? Was ist, wenn wir vorher nicht wissen, wie viele innere Wörterbücher es gibt? Betrachten Sie nun das folgende Detail:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India>
Hier haben wir zwei innere Wörterbücher. Es handelt sich nicht um eine optimierte Methode, die Länge der inneren Wörterbücher jedes Mal explizit hinzuzufügen. Wir können dieses Problem lösen, indem wir isinstance() mit der len()-Methode kombinieren. Die Idee besteht darin, zunächst die Länge des gesamten Wörterbuchs in einer Variablen zu speichern (sagen Sie hier „Länge“) . Durchlaufen Sie dann alle Werte() des Wörterbuchs und prüfen Sie, ob es sich um eine Instanz von dict handelt. Wenn 'WAHR' Dann wird die Länge dieses inneren Wörterbuchs ermittelt und zur Variablen hinzugefügt Länge . Auf diese Weise konnte die Gesamtlänge eines verschachtelten Wörterbuchs ermittelt werden.
Beispiel 1: Dynamisches Ermitteln der Länge eines verschachtelten Wörterbuchs mithilfe einer for-Schleife:
Wenn wir mehr Schlüssel in einem Wörterbuch haben, sind deren Werte wiederum Wörterbücher. Dann müssen wir prüfen, ob der Wert jedes Schlüssels vom Typ ist. Wenn es sich um ein Wörterbuch handelt, verwenden wir len() für den Wert und addieren den Wert zur Länge des äußeren Wörterbuchs.
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)> |
>
>
Ausgabe:
The length of the dictionary is 9>
Notiz: Dieser Ansatz funktioniert nur, wenn die Verschachtelung der Wörterbücher nur bis zu 2 Ebenen umfasst.
Wenn das Wörterbuch wie folgt tiefer verschachtelt ist:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street: St_number:4 St_name:Brigade Road City:Bangalore Country:India>
Beispiel 2: Rekursion verwenden, um die Länge eines verschachtelten Wörterbuchs zu ermitteln:
Hier haben wir eine rekursive Funktion count_nested_len() verwendet, um die Länge jedes Wörterbuchs zu zählen. Wir iterieren über die Schlüssel von Wörterbüchern. Sobald ein Wert ein Wörterbuch ist, verwenden wir dieses Wörterbuch erneut.
Python3
# 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))> |
>
>
Ausgabe:
Nested dictionary length: 11>
Ansatz 3: Verwendung des Wörterbuchverständnisses
Python3
# verschachteltes Wörterbuch
dict2 ={
'Name':
{
„Vorname“: „Steve“,
„Nachname“: „Jobs“
},
„Alter“:30,
„Bezeichnung“: „Programmierer“,
'Adresse':
{
'Straße':
{
'st_number':4,
„st_name“: „Rockins Road“
},
„Stadt“: „Bangalore“,
„Land“: „Indien“
}
}
# Verwenden Sie das Wörterbuchverständnis, um die Länge des verschachtelten Wörterbuchs zu ermitteln
Länge = len({k: v für k, v in dict2.items()})
print(Die Länge des Wörterbuchs ist, Länge)
#Dieser Code wurde von Edula Vinay Kumar Reddy beigesteuert
METHODE 4:Verwenden eines Generatorausdrucks mit der Funktion sum().
ANSATZ:
Ein Generatorausdruck wird verwendet, um eine Folge von Einsen zu erstellen, wobei jede Eins einem Schlüssel im Wörterbuch entspricht. Anschließend wird die Funktion sum() verwendet, um die Einsen zu addieren, was die Länge des Wörterbuchs ergibt.
ALGORITHMUS:
1.Erstellen Sie einen Generatorausdruck, der für jeden Schlüssel im Wörterbuch eine Folge von Einsen generiert.
2.Verwenden Sie die Funktion sum(), um die Einsen in der Sequenz zu addieren.
3.Geben Sie die Summe zurück, die die Länge des Wörterbuchs darstellt.
Python3
dict1>=> {>'Name'>:>'Steve'>,>'Age'>:>30>,>'Designation'>:>'Programmer'>}> length>=> sum>(>1> for> key>in> dict1)> print>(length)> |
>
>Ausgabe
3>
Die zeitliche Komplexität dieses Ansatzes beträgt O(n), wobei n die Anzahl der Schlüssel im Wörterbuch ist.
Die räumliche Komplexität dieses Ansatzes beträgt O(1)