Python 3.x 根据具有不同返回元素数的筛选列表获取dict值

Python 3.x 根据具有不同返回元素数的筛选列表获取dict值,python-3.x,Python 3.x,我使用以下代码从包含“”的列表中筛选元素: def sizes(): new_list = [x for x in mid_item_size_one if '"' in x] return new_list 这将根据需要返回带有“”的任何元素。下面是字符串示例 Random Text 0.5" Random Text 0.25" Random Text 1.5" x 0.5" Random Text I.split然后应用上

我使用以下代码从包含“”的列表中筛选元素:

def sizes():
    new_list = [x for x in mid_item_size_one if '"' in x]
    return new_list
这将根据需要返回带有“”的任何元素。下面是字符串示例

Random Text 0.5" Random Text
0.25" Random Text
1.5" x 0.5" Random Text
I
.split
然后应用上述函数返回:

['0.5"']
['0.25"']
['1.5"', '0.5"']
现在,我需要在字典中查找每个元素,并将key:value对中的值作为新的单个变量返回,以便能够将它们添加到包含许多其他变量的新字符串中。请参见下面的期望结果示例:

val_1 = '0.5"'
val_1 = '0.5"'
val_1 = '1.5"' and val_2 = '0.5"'
我已经有了从字典中查找/检索值的功能,但是自从我开始通过过滤器检索值以来,我一直无法找到如何检索dict值

def item_size_one_final(size_dict):
    for x in sizes():
        for key in size_dict:
            if key in sizes():
                return size_dict[key]
        return "Hmmmm"
    return"Not Working"
上面的for循环会导致所有循环上出现
['Hmmmm']
。有人对如何做到这一点有什么建议吗

@当然,希望这个例子能有所帮助

size_dict = {
    '1/4"' : '8mm - 1/4"',
    '1.5"' : '40mm - 11/2"',
    '0.5"' : '15mm - 1/2"',}
原始数据输入:

0.5" Pipe
1/4" Flange
1.5" x 0.5" Reducer
我的公司使用SAP设置项目代码和项目描述格式,因此我将采用这三种描述并将其转换为我们的格式。这:

def sizes():
    new_list = [x for x in mid_item_size_one if '"' in x]
    return new_list
在中间添加一个步骤以拆分为列表,然后返回:

['0.5"']
['0.25"']
['1.5"', '0.5"']
从这一点开始,我需要在字典中运行这些元素并获得值(键:valuepair)。我的电流for循环不工作,我不确定为什么或者我可以改变什么来纠正它。 最终结果应该是:

var_1 = 15mm - 1/2"
var_1 = 8mm - 1/4"
var_1 = 40mm - 11/2", var_2 = 15mm - 1/2"

如果我理解正确,您的错误是在字典中循环查找大小列表中的每个值,为什么

字典的概念是,当您有一个与键匹配的值时,您可以从字典中获得匹配的值

此外,无需调用两次
size
来接收相同的值,在之前保存结果,然后使用该值

def item_size_one_final(size_dict):
    sizes_lst = sizes()
    res = []
    for x in sizes_lst:
        if x in size_dict:
            res.append(size_dict[x])
    return res

我不是100%确定你想要代码做什么。你能提供更具体的输入和输出值吗?谢谢。@Riedler-我已经编辑了我的OP,加入了第二个例子,希望能更清楚。诱杀装置-返回错误
KeyError:'0.5“
返回。My sizes funct为我提供字符串中的所有尺寸,因为我使用的产品有时会有多个尺寸,当出现这种情况时,我需要该项目中每个尺寸的dict值。这就是你要问的吗?在OP中添加了snipit以显示它在字典中。@Blackmagic42啊,对不起。在
if
条件下,把那一个搞糟了。它应该是
size\u dict
而不是
size\u lst
。您的
size\u dict
中的键是问题所在,请从那里删除逗号,它们是不需要的。我会更新我的答案,因为我想我现在更明白你的意思了。诱杀陷阱-我也注意到了逗号-这些都是从以前的尝试提取的大小,但是的,是时候删除它们了。这使得它为大小为1的项生成值,但是大小为2的项只返回1值。我想知道在那之后最好的方法是从字符串中删除第一个大小,然后让它再次处理?@Blackmagic42我已经更新了答案以返回一个列表,所以现在你应该得到一个匹配大小的列表。在某种程度上,第一个值将在大小等方面与第一个键匹配。Nice-这将获得项目列表。非常感谢。
def item_size_one_final(size_dict):
    sizes_lst = sizes()
    res = []
    for x in sizes_lst:
        if x in size_dict:
            res.append(size_dict[x])
    return res