【问题标题】:how to pass dictionary statement inside function如何在函数内部传递字典语句
【发布时间】:2019-03-27 09:46:31
【问题描述】:
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.'

当我尝试在其中插入语句时,这段代码出现错误 函数,它显示错误或显示字典值而不是 字典键。虽然在函数外执行同一行时它正在工作 完美(即它给出了正确的字典键)。

【问题讨论】:

  • “执行”字典是什么意思?我很难理解这段代码在做什么。
  • 另外,它是一个 Pandas 数据框吗?
  • 你在行尾有一个额外的]list(comp.values()).index(comp[comp_name])],你还没有定义数据,所以很难调试你的代码。 “执行错误行”不在您的代码中,因此不太清楚问题是什么。

标签: python python-3.x function dictionary ordereddictionary


【解决方案1】:
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

我认为现在这会很完美。

【讨论】:

    【解决方案2】:

    您的问题是您将函数中的 comp_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.'
    

    【讨论】:

    • 哦,我交换了这些值。非常感谢您调试和帮助我。
    • 很高兴我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多