1

以下のような Python 辞書があります。

d={ 'cs101': {'name': 'Building a Search Engine', 'teacher': 'Dave',
    'assistant': 'Peter C.'},
    'cs373': {'name': 'Programming a Robotic Car', 'teacher': 'Sebastian',
    'assistant': 'Andy'}
}

「ピーター」という名前がこれらの要素のいずれかの教師またはアシスタントであるかどうかを確認する必要があります. 「Peter」と「Peter C.」に注意してください。二人は別人です。coursenameとをループする変数である'cs101'とします'cs373'。「in」キーワードを使用してメンバーシップを確認する場合:

'Peter' in d[coursename]['assistant'] 

True を返します。

同様に、'' in d[coursename]['assistant']も True を返します。

inそのため、キーワードを使用できないようです..

メンバーシップの確認方法を教えてください。

4

4 に答える 4

4

ピーター、どこにいるの?

'Peter' in 'Peter Pan'文字列'Peter'が'Peter Pan' のどこかにあるかどうかを確認します。これは明らかに真です。

完全一致が必要な場合==は、次の例のようにを使用する必要があります。

'Peter' == d[coursename]['assistant']

上記は大文字と小文字を区別する一致を行います。大文字と小文字を区別しない場合は、次のように記述できます'Peter'.lower() == d[coursename]['assistant'].lower()


inとの違いの例==

Python 2.7.3 (デフォルト、2012 年 4 月 13 日 00:05:08)
[GCC 4.2.1 (Apple Inc. ビルド 5666) (ドット 3)] ダーウィン
詳細については、「ヘルプ」、「著作権」、「クレジット」、または「ライセンス」と入力してください。

>>> 「ピーターパン」の「ピーター」
真実

>>> 「プリンスパン」の「ピーター」
間違い

>>> 'ピーター' == 'ピーター'
真実

>>> 'ピーター' == '王子'
間違い

>>> 「バナナ」の「」
真実

>>> '' == 'バナナ'
間違い
于 2012-07-13T02:58:42.037 に答える
1

使用するのではなく、文字列が等しいかどうかを具体的に確認しますin

'Peter' == d[coursename]['assistant'] 

文字列が正確に 'Peter' である場合にのみ true になります

于 2012-07-13T03:00:09.497 に答える
0

少し不明確なので、正確に何をしたいのかに応じて、次のようなものがあります。

'Peter' in (d[coursename]['teacher'], d[coursename]['assistant'])

これは、文字列内にある'Peter'かどうかをチェックするテストとは異なり、タプル内の値の 1 つと等しいかどうかをチェック'Peter'します。

于 2012-07-13T03:00:47.347 に答える
0

これには、複数のキーがある場合はループを使用する必要があります (Python 3.9)。それを可能にする別のモジュールを使用していない限り、ワンライナーでは不可能です。

for k in d.keys():
    if 'Peter' in d[k]['assistant']:
        print(True)
于 2021-10-06T08:52:45.970 に答える