如何根据关键字的字符串提取字典的关键字?

2024-09-29 00:14:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下的变量字典,作为优化运行的结果。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)])

但这不起作用,因为其余索引不会在其所有初始范围值上迭代。我在看的地方也找不到类似的东西。最有效的方法是什么?你知道吗


Tags: inhttpscomformatfor字典stackas
1条回答
网友
1楼 · 发布于 2024-09-29 00:14:06

要提取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中包含多少个字符,这都将起作用。你知道吗

相关问题 更多 >