由于优化运行,我具有以下变量字典。 https://i.stack.imgur.com/pIA7i.jpg
我想提取l索引为0(l as in 'FEq_(i,_j,_k,_l)'
)的键的值,以便将它们与值A相乘,并提取其中l!=0
的键的值以便将它们乘以值B。
我一直在尝试这样:
for l in [0]:
print(varsdict["FEq_({0},_{1},_{2},_{3})".format(i,j,k,l)])
,但是这不起作用,因为其余索引因此不会在所有初始范围值上进行迭代。我看上去也找不到类似性质的东西。最有效的方法是什么?
答案 0 :(得分:0)
要提取l == '0'
处的值:
vals_0 = [varsdict[k] for k in varsdict if k.split('_')[-1][:-1] == '0']
要提取其他值(其中l
的值不是0)
other_vals = [varsdict[k] for k in varsdict if k.split('_')[-1][:-1] != '0']
说明:
由于您的字典键是格式为'FEq_(i,_j,_k,_l)'
的字符串,因此使用split('_')
将返回一个列表,其中包含'_'
出现之间的部分,即['FEq', '(i,', 'j,', 'k,', 'l)']
。
然后,我们使用[-1]
选择此列表中的最后一个元素,即字符串'l)'
。
现在,我们使用切片[:-1]
来选择此字符串中除最后一个字符(将是)
字符)之外的所有字符,最后返回'l'
。
请注意,无论l
中包含多少个字符,这都将起作用。