我想用给定的列表给下面的dict
y1~y10[name]
赋值。你知道吗
我知道使用eval(self.y$i[name]) = value
是错误的,但是我应该如何在python中这样做呢?你知道吗
class excel:
def __init__(self):
self.base_year = 2004
self.y1 = {'year':self.base_year}
self.y2 = {'year':self.base_year + 1}
self.y3 = {'year':self.base_year + 2}
self.y4 = {'year':self.base_year + 3}
self.y5 = {'year':self.base_year + 4}
self.y6 = {'year':self.base_year + 5}
self.y7 = {'year':self.base_year + 6}
self.y8 = {'year':self.base_year + 7}
self.y9 = {'year':self.base_year + 8}
self.y10 = {'year':self.base_year + 9}
def value(self, name, value_list):
for value, i in value_list, range(1, 10):
eval(self.y$i[name]) = value
list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 ]
e1.value('test', list)
不需要使用
eval
当getattr
可以:但最好把你的孩子们列在一张单子上。这样你就可以:
在日常任务中使用内省&c的诱惑是一种强烈的代码味道,这意味着在这里重新思考您的方法,正如其他人所提到的,制作一个
self.y
列表dicts
是一个更好的主意。不过,您的代码中还需要其他修复。你知道吗是的,这个
self.y
是base-0(0到9),这在编程中不可避免地要简单得多,简单是一个非常宝贵的优点,我不想放弃它。。。你知道吗我和Kevin或Dan D一样不喜欢使用eval,但要回答您的问题,您可以使用:
函数的作用是:对表达式求值,但赋值为=、+=等的表达式在Python中不是表达式。这是一个声明。因此,我使用eval()go将dict引用获取到局部变量(y)中,并使用该引用设置它引用的dict的成员。你知道吗
您还可以将这两个语句粘在一起并消除yi局部变量:
然而,正如其他人所说,这并不是最好的方法。一份词典、一份单子甚至一组字典都能更好地完成这项工作。(参见Alex Martelli的例子。)
相关问题 更多 >
编程相关推荐