Как использовать словарные ключи и значения в классе Python? - PullRequest
0 голосов
/ 05 октября 2018

Я новичок и пытаюсь изучить метод класса в 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()

, это дает мне keyerror of dict key.Ошибка заключается в следующем:

KeyError: 'competencies'

Я пытался исправить имя ключа, но он продолжает выдавать ошибку.Кто-нибудь может помочь мне, как использовать словарные ключи в классе Python?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Проблема, которую вы получаете: KeyError, которая возникает , когда ключ сопоставления (словарь) не найден в наборе существующих ключей.В вашем случае ключ competencies не в dict 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)
0 голосов
/ 05 октября 2018

Вы передаете аргумент функции в неправильном порядке:

Здесь

es = employer_search(d,ans)

должно быть

es = employer_search(ans,d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...