如何在函数中传递字典语句

2024-04-29 08:24:52 发布

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

comp = {'Bajaj Auto Ltd.':"Bajaj Auto Ltd., Bajaj Auto Ltd, Bajaj Auto, 
Bajaj Auto's, Bajaj Auto Limited"}

comp_name='Bajaj Auto Ltd.'

def findcname(comp_name,data,comp):
    comp=comp
    comp_name=comp[comp_name]

    #data=data[data.Head.str.contains("|".join(list(map(lambda x:x.strip(), 
    #(comp_name.split(','))))),case=False) |                 
    #data.Content.str.contains("|".join(list(map(lambda x:x.strip(), 
    #(comp_name.split(','))))),case=False)]

    data['Company']=list(comp.keys())list(comp.values()).index(comp[comp_name])

    return data

findcname(comp_name,data,comp)





> Output:
> 
> KeyError                                 Traceback (most recent call last)
>     <ipython-input-122-37eb04bc7686> in <module>()
>     ----> 1 findcname(comp_name,data,comp)
>     
>     <ipython-input-121-29a90c8a1238> in findcname(comp_name, data, comp)
#>           3     comp_name=comp[comp_name]
#>           4     data=data[data.Head.str.contains("|".join(list(map(lambda 
#                  x:x.strip(),(comp_name.split(','))))),case=False) | 
#                  data.Content.str.contains("|".join(list(map(lambda 
#                  x:x.strip(),(comp_name.split(','))))),case=False)]
>     ----> 5     data['Company']=list(comp.keys())list(comp.values()).index(comp[comp_name])]
>           6     return data
>     
>     KeyError: "Bajaj Auto Ltd., Bajaj Auto Ltd, Bajaj Auto, Bajaj Auto's, 
  Bajaj Auto Limited"

执行错误行:

(list(comp.keys())[list(comp.values()).index(comp[comp_name])])

> Output:
> 'Bajaj Auto Ltd.'

当我试图在代码中插入语句时,代码中出现了错误 函数,它显示错误或显示字典值而不是 字典键。当在函数外部执行同一行时,它正在工作 完全正确(即给出正确的字典键)。你知道吗


Tags: lambdanamemapautodatalistsplitstrip
2条回答

您的问题是,将函数中的comp\u name替换为行中的长字符串:

comp_name=comp[comp_name]

也就是说comp_name这里是

"Bajaj Auto Ltd., Bajaj Auto Ltd, Bajaj Auto, Bajaj Auto's, Bajaj Auto Limited"

在功能之外,定义为:

comp_name='Bajaj Auto Ltd.'
def findcname(comp_name,data,comp):
    comp=comp
    #comp_name=comp[comp_name]

    data=data[data.Head.str.contains("|".join(list(map(lambda x:x.strip(),(comp[comp_name].split(','))))),case=False) |  data.Content.str.contains("|".join(list(map(lambda x:x.strip(),(comp[comp_name].split(','))))),case=False)]

    data['Company']=list(comp.keys())list(comp.values()).index(comp[comp_name])

    return data

我想这会很好用的。你知道吗

相关问题 更多 >