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

これを行うための最も 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')

しかし、許可よりも許しを求める方が簡単です。tryandを使用すると、少し簡潔になるだけexceptでなく、名前が見つかるのが通常のケースであり、名前が見つからないのは例外的なケースであることを明確にします。

于 2013-09-23T21:42:48.807 に答える
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 に答える
1

for ループは必要ありません。次のものが必要です。

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