我正在尝试创建一个简单的python函数,如下所示:
def fnc_assign(y,a):
'new_acc_no' + y + '.text' = import_list[x][a]
我想做的就是在我调用fnc_assign(10,1)时分配new_acc_no10.text = import_list [1] [0],但是我一直坚持让函数的左手边工作(我收到一个SyntaxError:无法分配给运算符)。
感谢您的帮助!
编辑: 如下所述,new_acc_no1具有.text属性,该属性= import_list [x] [0]。
我有很多new_acc_no,所以我一直在做的是:
new_acc_no1.text = import_list[x][0]
new_acc_no2.text = import_list[x][1]
new_acc_no3.text = import_list[x][2]
new_acc_no4.text = import_list[x][12]
new_acc_no5.text = import_list[x][13]
我还有很多需要补充的地方,所以我认为编写一个可以写出new_acc_noY.text = import_list [x] [a]的函数将是有益的,因为x是while循环中的变量,之前的代码块在其中。因此该函数将为fnc_assign(1,2),它将生成输出:
new_acc_no1.text = import_list[x][2]
在x仍从循环中输入其变量输入的情况下。这可能吗?
答案 0 :(得分:0)
应该是
def fnc_assign(y,x):
import_list[x][0] = 'new_acc_no' + y + '.text'
请注意,您的LHS是字符串,Python中的字符串是不可变的,即无法更改。我了解您的意图是将结果字符串分配给您放入RHS的相关数组元素。只需反转它们即可完成分配。
还是要真正拥有一个名为new_acc_no10.text
的变量并在导入列表中为其分配值?
更新
这还假设y
是一个字符串(或支持使用+
运算符与字符串连接),否则请使用str(y)
。
新任务更新
您在问题中的代码(假设x
中的外部循环
for x in someValueIterator:
new_acc_no1.text = import_list[x][0]
new_acc_no2.text = import_list[x][1]
new_acc_no3.text = import_list[x][2]
new_acc_no4.text = import_list[x][12]
new_acc_no5.text = import_list[x][13]
似乎建议采用以下方法。将帐号整理到一个字典中,该字典由您要分配的RHS索引索引,例如
acc_nos = [new_acc_no1, new_acc_no2, new_acc_no3, new_acc_no4, new_acc_no5]
indices = [0,1,2,12,13]
idx2acc = dict(zip(indices, acc_nos))
现在像这样循环:
for index, acc_no in idx2acc.iteritems():
acc_no.text = import_list[x][index]
,并考虑到x
中的外部循环,而不是
for x in someValueIterator:
for index, acc_no in idx2acc.iteritems():
acc_no.text = import_list[x][index]
考虑直接像这样循环:
for current_list in import_list:
for index, acc_no in idx2acc.iteritems():
acc_no.text = current_list[index]
答案 1 :(得分:0)
将y更改为str(y)
def fnc_assign(y,x):
import_list[x][0] = 'new_acc_no' + str(y) + '.text'
编辑:
您不能将int添加到str。