我是新手,尝试在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类中使用字典键吗?
先谢谢了。
答案 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)
class EmployerSearch:
。 (CamelCase)