如何在python类中使用字典键和值?

时间:2018-10-05 05:45:09

标签: python dictionary

我是新手,尝试在python中学习类方法。 我有两个字典,如下所示:

d = {
    "day_rate":None,
    "hourly_rate": 50,
    "Comp_ID":[482,483],
    "availability":"",
    "page": 1
}

ans = {
        "hourly_rate": "50",
        "day_rate":None, 
         "available": "Available Immediately", 
         "competencies": "485,483,488"
      }

现在我要在Python类中插入这两个字典,并希望在类函数中使用它们的键。 我以简单的方式尝试过,就像我只是插入dict并尝试直接使用一样。 我的方法如下:

class employer_search(object):

    def __init__(self,ans,d):
        self.ans = ans
        self.d = d

        print(ans)
        print(d)

    def Competency_scoring(self):
        if self.ans['competencies'] is not None:
            Job_comp = []
            for i in (self.ans['competencies'].split(",")):
                Job_comp.append(int(i))
            h = []
            for j in self.d['Comp_ID']:
                for i in Job_comp:
                    if j == i: 
                        a = i
                        h.append(a)
            matched_comp = []
            final_result = []

            q = [[x,h.count(x)] for x in set(h)]

            print(len(q))

            if len(q) == 1:
                comp_score = 0.25
            elif len(q) == 2:
                comp_score = 0.50
            elif len(q) == 3:
                comp_score = 0.75
            elif len(q) >= 4:
                comp_Score = 1.0
            return(comp_score)
        else:
            return(0)

然后我做了

es = employer_search(d,ans)
es.Competency_scoring()

它给了我dict key的keyerror。错误如下:

KeyError: 'competencies'

我试图更正键名,但是它不断给我错误。 谁能帮我在Python类中使用字典键吗?

先谢谢了。

2 个答案:

答案 0 :(得分:3)

您以错误的顺序传递了函数参数:

在这里

es = employer_search(d,ans)

应该是

es = employer_search(ans,d)

答案 1 :(得分:1)

您遇到的问题是KeyError,当在现有键集中找不到映射(字典)键时,会出现该问题。您的情况下,competencies键不在字典d中。

因此,您需要从以下位置更改您的课堂通话:

es = employer_search(d,ans)

收件人:

es = employer_search(ans,d)

旁注:

  • 您可以使用命名参数将__init__强制调用为:
    def __init__(self,*,ans,d),然后将其称为es = employer_search(ans=ans, d=d)
  • 此外,如果您使用的是Python 3,则只需将其声明为class EmployerSearch:。 (CamelCase)