使用字符串内容作为变量 - python

时间:2017-02-28 17:40:41

标签: python

我正在使用一个在类中有操作的包(?不确定是什么),通常数据以这种方式调用data[package.operation]。因为我必须做多个操作,想要缩短它并执行以下操作

list =["o1", "o2", "o3", "o4", "o5", "o6"]
for i in list:
     print data[package.i]

但由于它将i视为一个字符串,它不会执行操作,如果我拿掉字符串,那么它是一个未定义的变量。有办法解决这个问题吗?或者我只需要写很长的路?

特别是我正在使用pymatgen,其包Orbital以及.operation我想要调用特定的子轨道。如何使用它的一个真实示例是data[0][Orbital.s],第一个[0]表示要获取轨道s的有问题的元素(这就是我在代码中省略它的原因)上文)。

1 个答案:

答案 0 :(得分:2)

您可以使用getattr从对象中动态选择属性(在您的情况下为Orbital包;例如getattr(Orbital, 's'))。

因此您的循环将被重写为:

for op in ['o1', 'o2', 'o3', 'o4', 'o5', 'o6']:
    print(data[getattr(package, op)])