首页 > 解决方案 > 如何根据键的字符串提取字典的键?

问题描述

由于优化运行,我有以下变量字典。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)])

但这不起作用,因为其余索引不会因此迭代其所有初始范围值。我也找不到我看过的类似性质的东西。最有效的方法是什么?

标签: pythonpython-3.xdictionary

解决方案


提取其中的值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)'usingsplit('_')将返回一个列表,其中包含'_', 即['FEq', '(i,', 'j,', 'k,', 'l)'].

然后我们使用[-1]选择此列表中的最后一个元素,即字符串'l)'

现在我们使用切片[:-1]来选择这个字符串中除了最后一个(将是)字符)之外的所有字符,最后返回'l'.

请注意,无论l.


推荐阅读