2017-09-25 27 views
0

幾天來我正在尋找解決我的問題的方法。 我有一個python對象,它有一組參數。從兩個列表更新對象屬性/ python 3

我正在逐行讀取每行的csv文件我提取與參數集相對應的值。這些值分組在一個列表中。所有的csv行不具有相同的長度,它們可以包含最少3個值和最多6個值。

我想要做的是:

class MidiData: 
#constructor 
def __init__(self): 
    self.Track = "0" 
    self.Time = "0" 
    self.Info = "0" 
    self.Channel = "0" 
    self.Note = "0" 
    self.Velocity = "0" 

dictionary=['Track','Time','Info','Channel','Note','Velocity'] 
mylist=["a", "b", "c", "d", "e", "f"] 

#function I want to implement 
myobject.update(mylist) 

myobject.print() 

輸出:

Track = "a" 
Time = "b" 
Info = "c" 
Channel = "d" 
Note = "e" 
Velocity = "f" 

一次我的列表是準備好了,我有這個名單

例如更新我的對象的參數值感謝您的幫助,我希望我的解釋完整。

回答

1

這就是zip派上用場的地方。你這樣做myobject.update(dict(zip(dictionary, mylist)))

作爲實現update方法,你可以做這樣的事情:

myobject.__dict__.update(dict(zip(dictionary, mylist)) 

但我真的不建議用__dict__做任何事情 - 如果你想通過動態域只是使用的東西字典而不是自定義類。

+0

好更新所有這些屬性,但你如何實現'update'方法? –

+0

謝謝,我已經實現了上述解決方案。 –

1

可以使用__setattr__在一個循環中通過他們的名字

def update(self, names, values): 
    for name, value in zip(names, values): 
     self.__setattr__(name, value) 
+0

超級簡單的解決方案,謝謝科裏! –

相關問題