Python Erzeugt ein dynamisches Wörterbuch aus der Liste der Schlüssel

8

Ich habe eine Liste wie unten angegeben -

%Vor%

Wie kann ich ein dynamisches Wörterbuch erstellen, das wie folgt abgerufen werden kann -

%Vor%

Die Liste könnte alles sein; Variable Länge oder bestehend aus "N" Anzahl der mir unbekannten Elemente ...

Jetzt habe ich noch eine Liste, so dass Mein Wörterbuch entsprechend aktualisiert werden sollte

%Vor%

d. Wenn Schlüssel "Person", "Männlich", "Junge", "Student", "id_123" bereits vorhanden ist, sollte der neue Schlüssel "Alter" angehängt werden ...

    
Abhishek Kulkarni 04.07.2013, 04:44
quelle

7 Antworten

8

Ich lerne gerade Python, also könnte mein Code nicht sehr pythonisch sein, aber hier ist mein Code

%Vor%     
Roman Pekar 04.07.2013, 04:55
quelle
4

Sie können dies tun, indem Sie verschachtelte defaultdict s:

machen %Vor%

Das hat den Vorteil, dass man

schreiben kann %Vor%

ohne unbedingt den Helfer setpath verwenden zu müssen.

Sie können dies auch ohne rekursives defaultdict s tun:

%Vor%     
nneonneo 04.07.2013 05:18
quelle
3

Vielleicht könnten Sie dict:

ableiten %Vor%     
Rao 04.07.2013 05:50
quelle
1

Erstellen Sie Ihre eigene Klasse, die von dict abgeleitet ist, wobei die init -Methode eine Liste und einen einzelnen Wert als Eingaben annimmt und die Liste der Schlüsselwerte durchläuft, eine Aktualisierungsmethode definiert, die eine Liste annimmt ein neuer Wert und für jedes Element, das noch kein Schlüssel ist, setze es auf den neuen Wert (vorausgesetzt, dass du das brauchst).

Vergessen Sie die Idee von

  
    
      

mydict ["Person"] ["Männlich"] ["Junge"] ["Student"] ["id_123"] ["Name"] = value1 '

    
  

, da es mit Subindizes verwechselt wird.

    
Steve Barnes 04.07.2013 05:09
quelle
0

Ich versuche, mit ähnlichen Dingen umzugehen, also kann ich einige Richtlinien vorschlagen, aber ich bin wieder naiv in Python, also ist dies nur eine Richtlinie ...

Sie haben eine Liste von Schlüsseln , Sie können also auf jeden Fall mit einer Schleife beginnen, die für jeden Wert iteriert, und dann den Wert

zuweisen

wie

%Vor%

Wenn Sie etwas tun, müssen Sie i erhöhen und den Index zu [i] [i + 1] ändern und dann bis i + n = len (Tasten)

folgen     
Shruti Joshi 04.07.2013 05:20
quelle
0

Verwenden Sie tuple(keyList1) als Schlüssel. (Tupel sind unveränderlich und können daher Diktatschlüssel sein).

Sie werden eine Welt der Kopfschmerzen mit dem geschachtelten Diktat-Ansatz haben. (Nested Loops für die Enumeration, Legacy-Daten, wenn sich die Hierarchie ändern muss, usw.).

Bei einem zweiten Gedanken sollten Sie vielleicht eine Personenklasse definieren

%Vor%

Verwenden Sie dann eine Liste aller Personen und filtern Sie mit z. B.

%Vor%

... für & lt; = 10000 Studenten sollten Sie performanceweise gut sein.

    
Torben Klein 04.07.2013 05:35
quelle
-2
%Vor%

Sie können es auch in einem Schritt wie diesem tun

%Vor%     
John La Rooy 04.07.2013 04:54
quelle

Tags und Links