2016-11-24 5 views
2

Python 3. Windows 10.Ersetzen Sie Werte in der Liste der Listen

Ich habe eine hierarchische Liste und ich möchte ihre Werte mit den angegebenen Werten ändern.

Zum Beispiel: Ich habe hierarchische Liste

l = [[[0, 4], 1], [2, 3], 5]] 

und ich habe einen Wörterbuch

{0: 'da-1.txt', 
1: 'da-2.txt', 
2: 'en-1.txt', 
3: 'en-2.txt', 
4: 'it-1.txt', 
5: 'it-2.txt'} 

Ich mag entsprechend Werte der Liste mit den Werten des Wörterbuchs ersetzen, ohne die Listenhierarchie zu brechen Struktur.

Ausgabe sollte wie folgt sein:

l = [[['da-1.txt', 'it-1.txt'], 'da-2.txt'], ['en-1.txt', 'en-2.txt], 'it-2.txt'] 
+0

In welcher Sprache versuchen Sie dies zu erreichen? – Becojo

+1

Ofc. Python 3. Entschuldigung, es war mein erster Beitrag. –

Antwort

0

Sie über die Liste gehen und für jedes Kontrollelement, wenn es sich um eine Liste ist. Wenn dies nicht der Fall ist, ersetzen Sie es durch das entsprechende Element des Wörterbuchs, falls es existiert. Wenn es gilt den gleichen Algorithmus rekursiv:

def rec_replace(l, d): 
    for i in range(len(l)): 
     if isinstance(l[i], list): 
      rec_replace(l[i], d) 
     else : 
      l[i] = d.get(l[i], l[i]) 

Hinweis:
Diese Implementierung ist von einem direkten Austausch der Elemente in der Liste. Alternativ könnte ein ähnlicher Ansatz verwendet werden, um stattdessen eine neue Liste zurückzugeben.

+0

Vielen Dank. Genau das, was ich wollte. –

Verwandte Themen