2017-10-06 5 views
0

Ich möchte ein dict/array um einen Ebenenwert verschachteln. Das Diktat ist bereits sortiert, aber nur 1-dimensional.Python - Verschachteln eines dict/array nach Wert

Es sieht wie folgt aus:

tables = { 
    1: { 
     'level': 1 
    }, 
    2: { 
     'level': 2 
    }, 
    3: { 
     'level': 3 
    }, 
    4: { 
     'level': 3 
    }, 
    5: { 
     'level': 2 
    }, 
    6: { 
     'level': 3 
    } 
} 

Wenn der Pegelwert des folgenden Punkt höher als der vorherige ist, die das Element wird im vorherigen Element verschachtelt werden. Zum Beispiel ITEM 1 Niveau 1, Ebene TOP 2 der 2 ist, so ITEM 2 bewegt sich in Punkt 1.

Es ist wie diese dann aussehen:

tables = { 
    1: { 
     'level': 1, 
     'tables': { 
      2: { 
       'level': 2, 
       'tables': { 
        3: { 
         'level': 3, 
        }, 
        4: { 
         'level': 3 
        } 
       } 
      }, 
      5: { 
       'level': 2, 
       'tables': { 
        6: { 
         'level': 3, 
        } 
       } 
      } 
     } 
    } 
} 
+3

Zeigen Sie uns, was Sie versucht haben ... zur Zeit haben Sie kein Problem oder eine Frage angegeben, sondern eher den Ansatz "Mach alle meine Arbeit für mich" – donkopotamus

Antwort

0

Es ist die klassische Rekursion Übung:

def get_next_level(level): 
    result = {} 
    result[level] = {'level': level} 
    if level > max(tables.keys()): 
     return None 
    next_level = get_next_level(level+1) 
    if next_level is not None: 
     result[level].update({'tables': next_level}) 
    return result 

Lösung ist kurz und einfach. Sie sollten die Berechnung wie folgt starten:

Verwandte Themen