这个问题可能非常愚蠢,但我试图使用字典迭代并返回结果。我知道如何迭代字典,但我想检查字典中是否存在输入的密钥,如果值存在与否,我希望程序打印。
class companyx:
def __init__(self,empid):
self.empid=empid
def employees(self):
employees={1:'Jane',2:'David',3:'Chris',4:'Roger'}
entered=self.empid
for emp in employees :
if emp == entered:
print ('Hi '+employees[emp] +' you are an employee of companyx.com')
print('You dont belong here')
emp=companyx(2)
emp.employees()
当我传递一个不在字典中的参数时,我希望该函数能够打印“你不属于这里”
答案 0 :(得分:8)
检查密钥是否在字典中的最简单(也是最常用的)方法是:
if entered in employees:
以上内容取代了代码的for/if
部分。请注意,不需要显式遍历字典,in
运算符负责检查成员资格。简短而甜蜜:)完整的代码如下所示:
def employees(self):
employees = {1:'Jane', 2:'David', 3:'Chris', 4:'Roger'}
if self.empid in employees:
print('Hi ' + employees[self.empid] + ' you are an employee of companyx.com')
else:
print("You don't belong here")
答案 1 :(得分:2)
试试这个:
if entered in employees.keys():
....
else:
....
答案 2 :(得分:2)
使用in
关键字快速执行字典查找:
if entered in employees:
# the key is in the dict
else:
# the key could not be found
答案 3 :(得分:2)
您不需要遍历字典来执行此操作。你可以写:
def employees(self):
employees={1:'Jane',2:'David',3:'Chris',4:'Roger'}
employee = employees.get(self.empid)
if employee:
print ('Hi ' + employee + ' you are an employee of companyx.com')
else:
print ('You dont belong here')
答案 4 :(得分:2)
执行此操作的最pythonic方法是尝试查找,如果发生则处理失败:
try:
print('Hi '+employees[entered] +' you are an employee of companyx.com')
except KeyError:
print('You dont belong here')
for
循环没有理由;词典的重点在于,您可以一步查找,d[key]
,而不必循环键并检查每个词== key
。
您可以使用in
检查密钥是否存在,然后查找。但这有点傻 - 你正在查找关键,看看你是否可以查找密钥。为什么不抬头看看?
您可以使用get
方法执行此操作,如果密钥丢失,则返回None
(或者您可以传递不同的默认值):
name = employees.get(entered)
if name:
print('Hi '+name +' you are an employee of companyx.com')
else:
print('You dont belong here')
但它是Easier to Ask Forgiveness than Permission。除了稍微简洁之外,使用try
和except
清楚地表明找到名称是正常情况应该是真的,而不是找到它是例外情况。
答案 5 :(得分:1)
不需要for循环 - 你只需要:
if entered in employees:
print 'blah'
else:
print 'You do not belong here'