我有条件,用户我有[]。 P是一个文件,其中包含填充的所有变量l,m,n ....
然后
if a[1] = '1':
p.l = a[2]
elif a[1] = '2':
p.m = a[2]
elif a[1] = '3':
p.n = a[2]
这些条件一直持续到20-25岁
在python 3.6和python 2.7
中处理此问题的最佳方法是什么?其他信息
您好, 很抱歉没有详细解释。 l,m,n等还有很多其他变量。但我必须在需要时定义它们。每个1,2,3等等可能有多达10-15,这取决于,但它们是固定的,因为这些数字不会改变,但l,m,n是我定义的,所以可以修改。
点是假设我得到一个像“你好,你好吗”和“你好你好”的字符串然后我把这个字符串放在变量中说'a'。 然后我将字符串拆分为[] = ['Hi','How','Are','You']和[] = ['Hello','How,'Are','you']。两次分开 现在我读了
if a[1] = 'HI':
p.l = a[2]
elif a[1] = 'Hello':
p.m = a[2]
elif a[1] = 'How':
p.n = a[2]
所以这里取决于[1]值我需要将a [2]值存储在不同的变量中。 此外,[1]可能有20-25个不同的输入。 根据输入,我将把它存储在该特定变量中。
答案 0 :(得分:2)
您可以使用字典来保存属性的名称以及setattr
来设置属性。
lookup = {'1': 'l', '2': 'm', '3': 'n'}
key, value = a[1], a[2]
attribute = lookup[key]
setattr(p, attribute, value)
答案 1 :(得分:0)
对于这样的事情,我喜欢使用dict作为一种调度表。
您可以定义如下所示的地图:
set_map = {
'1': "l",
'2': "m",
'3': "n"
}
然后将条件逻辑编码为字典查找:
setattr(p, set_map[a[1]], a[2])
setattr
缺少设置属性'。它将对象,属性名称和值作为参数。
它的工作方式是首先解析a
的值,然后解析set_map[a[1]]
的值,这将是我们的一个字母'l'
,'m'
,或'n'
)。然后,它使用值设置对象的属性。
举个例子,假设a[1] = '1'
和a[2] = 5
,我们的字典查找会产生
set_map[a[1]] == set_map['1'] == 'l'
然后setattr
将解析为
setattr(p, 'l', 5)
相当于输入
p.l = 5