2016-08-01 6 views
0

Ich habe eine while-Schleife, die eine Liste von Objekten (genannt listofSpreadsheetRowObjects) füllt, und eine andere Schleife, die ein Wörterbuch füllt, das Var1: Account2 (genannt dict_var1_to_account_2). Aber ich muss den Wert dieses Wörterbuchs in jedes Objekt eingeben, wenn der Schlüssel mit dem Account1 des Objekts übereinstimmt.Wie kann ich einem Objekt in einer Klassenliste einen bestimmten Wörterbuchschlüssel zuordnen?

Also im Grunde habe ich:

listofSpreadsheetRowObjects=[SpreadsheetRow1, SpreadsheetRow2, SpreadsheetRow3] 
dict_var1_to_account2={1234:888, 1991:646, 90802:5443} 

Ich habe dies versucht:

for k, v in dict_var1_to_account2.iteritems(): 
    if k in listOfSpreadsheetRowObjects: 
     if account1=k: 
       account2=v 

Aber es funktioniert nicht, und ich vermute, es ist meine erste "if" Anweisung, weil listOfSpreadsheetRowObjects ist nur eine Liste dieser Objekte, ich glaube nicht, dass sie tatsächlich mit den Attributen dieser Objekte in dieser Liste spricht. Aber ich habe versucht, falls vorhanden (k == item.account1 für Element in listOfSpreadsheetRows):, und das scheint auch nichts zu ziehen.

Wie würde ich auf account1 jedes Objekts zugreifen, damit ich sie nach Bedarf abgleichen kann?

Schließlich sollte ich drei Objekte mit den folgenden Informationen haben:

SpreadsheetRow 
self.Account1=Account1 
self.Account2=(v from my dictionary, if account1 matches the key in my dictionary) 

Antwort

0

Es sieht aus wie es wäre einfacher, die Reihe iterieren ersten Objekte, und dann für jeden zu überprüfen, ob seine account1 in der ist dict:

for row in listofSpreadsheetRowObjects: 
    if row.Account1 in dict_var1_to_account2: 
     row.Account2 = dict_var1_to_account2[row.Account1] 
+0

OH MEIN GUT, es ist so dumm einfach, warum habe ich nicht einmal daran gedacht, es umzukehren! Mein Held, vielen Dank @BrenBarn! – user3097421

Verwandte Themen