2016-06-13 17 views
0

Ich möchte Arrays mit Variablennamen aus einem anderen Array dynamisch erstellen. sagen, dass ich:Python: Array-Objekte dynamisch erstellen

Array1 = ['a', 'b', 'c'] 

Ich will jetzt programmatisch ein neues Array für jeden Wert in Array1 erstellen (wo ich weiß nicht, wie viele Werte tatsächlich in Array1 sein und ich weiß nicht, die Namen, die werden da sein und die in Array1 angegebenen Namen verwenden. So effektiv wird es mir geben:

a = [] 
    b = [] 
    c = [] 
+0

Foreach über Master-Array und für jedes Element neues Array erstellen? – Li357

+0

Das ist richtig, und jedes neue Array sollte den Namen haben, der im Master-Array angegeben ist. – user3124181

+0

Ich bin nicht sicher, dass Sie einzelne Variablen wie diese in Python dynamisch erstellen können. Ich schiebe auf größere Experten darauf. Als Kompromiss und vielleicht etwas besser lesbares erstellen Sie ein Wörterbuch von Arrays mit a, b, c als Schlüssel im Wörterbuch. – mba12

Antwort

4

Wenn Sie das tun Array1 = [a,b,c], verlieren Sie keine Informationen über die Namen der Variablen, die Sie das Array instanziiert verwendet, so dass ich nehme an, Sie Array1=['a','b','c'] gemeint. In Python verwenden wir normalerweise eine dict ionary, um damit zusammenhängende Probleme zu lösen. Mit einem Wörterbuch, können wir eine Zuordnung von 'a' zu einem leeren list wie so haben:

Array1 = ['a','b','c'] 
dicty = {} 
for i in Array1: 
    dicty[i] = [] 

Wenn dies nicht hilft, Ihr Problem zu lösen, bitte geben Sie mir weitere Informationen über das Problem, das Sie versuchen zu lösen.

+1

Ja, das ist, was ich beabsichtigt habe, werde ich meine ursprüngliche Frage ändern, um die einfachen Anführungszeichen in Array1 = ['a', 'b', 'c'] ... Danke für deine Lösung, das funktioniert. – user3124181

+1

Gute Arbeit @Brian, Adressierung der Verwirrung, während immer noch eine Lösung für das Problem :) +1 – slezica

0

Es gibt also ein paar Hypothesen, die erfüllt sein müssen. Wenn Array1 mehrere Einträge hat, die gleich sind, dann können Sie nicht unterschiedliche Arrays für sie haben - wenn zum Beispiel a == b zu True ausgewertet wird, müssen Sie ihnen beide die gleichen Arrays zuweisen. Zweitens, warum halten nicht nur ein Wörterbuch mit den Namen der entsprechenden Arrays:

names_dict = {} ## names_dict[a] = (0,0), names_dict[b] = (1,0), ... 
new_arrays = {} 
for i in Array1.shape()[0]: 
    for j in Array1.shape()[1]: 
     names_dict[Array1[i][j]] = (i,j) 
     new_arrays[(i,j)] = np.array(...) ## whatever array you want to create goes in the "..." 

new_arrays[names_dict[a]] wird für das Element in das Array bewerten a