从两个列表/ python 3更新对象属性

时间:2017-09-25 12:19:20

标签: python list object

有几天我正在寻找解决问题的方法。 我有一个python对象,它有一组参数。

我正在逐行读取一个csv文件,我提取了与参数集对应的值。这些值按列表分组。所有csv行的长度不同,它们最少包含3个值,最多包含6个值。

我想要做的是:一旦我的列表准备就绪,我用这个列表更新我的对象的参数值

示例:

var doc = DocumentApp.getActiveDocument();
body = doc.getBody();
body.replaceText("@Entity
public class MyLong {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private Long long;

}
", "This is a number");
doc.saveAndClose();

输出:

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()

感谢您的帮助,我希望我的解释完整。

2 个答案:

答案 0 :(得分:1)

zip方便的地方。您可以执行myobject.update(dict(zip(dictionary, mylist)))

之类的操作

至于实施update方法,你可以这样做:

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

但我真的不建议用__dict__做任何事情 - 如果你想要动态字段的东西,只需使用dict而不是自定义类。

答案 1 :(得分:1)

您可以在循环中使用__setattr__按名称

更新所有这些属性
def update(self, names, values):
    for name, value in zip(names, values):
        self.__setattr__(name, value)