2017-03-10 7 views
1

der Suche nach einer optimalen Lösung ist.Struktur Abflachung ich habe, istOptimale Lösung für Arrays innerhalb Arrays

Source a = { 
     "key1": [ 
      [ 
       0 
      ], 
      [ 
       1 
      ] 
     ], 
     "key2": [ 
      [ 
       2 
      ], 
      [ 
       3 
      ] 
     ] 
    } 
    Target=[0][1][2][3] 

Gibt es eine bessere Lösung als die folgenden?

a_values=a.values() 
    flatValues=[] 
    for i in range(0,len(a_values)): 
     flatValues=flatValues+a_values[i] 

Antwort

2

könnten Sie itertools.chain verwenden:

>>> from itertools import chain 
>>> a = {"key1": [[0],[1]], "key2": [[2],[3]]} 
>>> target_generator = chain(*a.values()) 
>>> target_list = [v for v in target_generator] 
>>> print(target_list) 
[[0], [1], [2], [3]] 

N. B.target_list könnte möglicherweise sehen auch wie folgt aus: später jedoch auf andere variables..the um[[2], [3], [0], [1]]

+0

Wie ist das leistungsfähiger? Können Sie das erklären? –

+0

Die Antwort von TigerhawkT3 [v für l in a.values ​​() für v in l] ist ebenfalls gut. Ihr Code kann Fehler in Python3 auslösen. – klim

0

Ich würde sagen, [v for l in a.values() for sl in l for v in sl] (oder [[v] for..., wenn Sie wirklich ein Bündel von Einzelelementlisten aus irgendeinem Grund wollen) aufgeräumter wäre. Beachten Sie, dass die Sortierung möglicherweise nicht in der von Ihnen gewünschten Reihenfolge erfolgt. Wenn das wichtig ist, müssen Sie möglicherweise irgendwann manuell sortieren (abhängig von Ihrer Python-Version und Ihrer Implementierung).

+0

Thanks..i es bin Sortierung ist nicht Priorität ... was ich will zu verstehen, ist ..apart von tider ist dies mehr performant? –

Verwandte Themen