1

这个问题可能很愚蠢,但我正在尝试使用字典来迭代并返回结果。我知道如何遍历字典,但我想检查输入的键是否存在于字典中,并且我希望程序打印该值是否存在。

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

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

4

6 回答 6

9

检查键是否在字典中的最简单(也是最惯用的)方法是:

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")
于 2013-09-23T21:31:04.607 回答
3

使用in关键字快速执行字典查找:

if entered in employees:
    # the key is in the dict
else:
    # the key could not be found
于 2013-09-23T21:31:30.797 回答
2

试试这个:

if entered in employees.keys():
    ....
else:
    ....
于 2013-09-23T21:30:16.787 回答
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')
于 2013-09-23T21:32:27.907 回答
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')

但是请求宽恕比请求许可更容易。除了稍微简洁之外,使用tryexcept清楚地表明找到名称是应该正确的正常情况,而没有找到它是例外情况。

于 2013-09-23T21:42:48.807 回答
1

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

if entered in employees:
    print 'blah'
else:
    print 'You do not belong here'
于 2013-09-23T21:31:01.010 回答