Python在FOR循环中使用IF

时间:2013-09-23 21:28:44

标签: python if-statement for-loop dictionary

这个问题可能非常愚蠢,但我试图使用字典迭代并返回结果。我知道如何迭代字典,但我想检查字典中是否存在输入的密钥,如果值存在与否,我希望程序打印。

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()

当我传递一个不在字典中的参数时,我希望该函数能够打印“你不属于这里”

6 个答案:

答案 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。除了稍微简洁之外,使用tryexcept清楚地表明找到名称是正常情况应该是真的,而不是找到它是例外情况。

答案 5 :(得分:1)

不需要for循环 - 你只需要:

if entered in employees:
    print 'blah'
else:
    print 'You do not belong here'