2017-04-07 4 views
1

Ich habe eine folgende Erklärung abmit Wörterbuch oder Listen Python

onehot = collection.defaultdict(list) 

, die ich mit zwei dimentional Vektor arbeiten zu füllen. wenn ich onehot hier drucken ist, was ich bekommen:

print(onehot) 
--->defaultdict<class'list'>,{0:['1200',1],1:['1203',2],2:['1400',4]} 

, die perfekt ist. Nun meine Frage ist, gibt es eine Möglichkeit, den "gepaarten" Wert von onehot zu bekommen. zum Beispiel:

onehot 1200 ---> 1 
onehot 1800 ---> 32 

Ich bin Neuling zu Python, so bin ich mir nicht sicher.

aktualisiert das Problem ist, dass ich weiß nicht wirklich, wo 1200 in der Liste enthalten ist, so dass ich will, und ich bin in der Zahl in der zweiten Dimension interessiert.
Also muss ich die Liste suchen für 1200 und die Werte der 2. Dimension, die in diesem Fall ist 1

+4

nicht klar, was Sie fragen. 'onehot [0]' bringt dir die Liste '['1200', 1]', ist das nicht was du willst? –

+0

Woher kommt '1800 -> 32'? Ich sehe es nicht in der Eingabe. –

+1

@PaulRooney Ich nehme an, das ist nur ein Beispiel – Dudnikof

Antwort

3

Hier ist ein Funktion, die das zweite Element in der Liste zurückgibt und das erste Element als Schlüssel verwendet (was Sie wollen, wenn ich Sie richtig verstanden habe). Sie können dies auch trivial erweitern, um ein neues Diktat zu erstellen, das Sie dann direkt verwenden können.

def getByFirstListElement(k): 
     ret = [] #There could be multiple hits, this returns a list of all 
     for key, value in onehot.enumerate(): 
      if value[0] == k: 
       ret.append(value[1]) 
     return ret 

Version, die ein Wörterbuch zurück:

def getPairDict(k): 
      ret = {}#There could be multiple hits, this returns a list of all 
      for key, value in onehot.enumerate(): 
       if value[0] == k: 
        ret.update((value,))#Add the values to the dict 
      return ret 
+1

Ich versuche @roman danke für Ihre Antwort – Engine

1

Sie können sich Ihre Struktur als ein multidimensionales Array im Moment vorstellen.

Wenn Sie das tun: onehot[0][0] --> 1200, onehot[0][1] --> 1

Iterate durch das Wörterbuch wie folgt:

for key in onehot: 
    print("{} --> {}".format(onehot[key][0], onehot[key][1])) 

result: 
    1200 --> 1 
    1203 --> 2 
    1400 --> 4 

Sie mit Ihren Daten in irgendeiner Weise spielen können Sie sehen, passen :)

+0

Danke für Ihre Antwort, ich habe die Frage zu aktualisieren. Ich möchte nicht auf den Wert mit der ID zugreifen, da ich nicht die ID für 1200 – Engine

Verwandte Themen