2016-05-11 7 views
1

コードを定義されていません。NameError:グローバル名 '_' が

if (query_id, _) in hashtable[bucket]: 

私は、これはlike in a for loopを動作するように期待されるが、その代わりに、それは、このエラーを与える:

NameError: global name '_' is not defined

hastable[bucket]はペアのリストですそれが問題の場合(これは私が疑う)です。何か案は?

+0

'query_id'をチェックしていますか? –

+0

私は最初のメンバーとして 'query_id'を持つペアに興味があり、もう一つは@PadraicCunninghamを心配していません。 – gsamaras

+0

次に、forループをアンパックすることを示唆しているようにしたい、ループして、 'if sub [0] == ..を使用する。 –

答えて

7

x in yは魔法ではありません。基本的にはy.__contains__(x)と同じです。したがって、inはプレースホルダで検索することはできません。左の引数は完全に評価されます。代わりに、

if any(query_id == qid for (qid, _) in hashtable[bucket]): 
+0

それはうまくいきました。なぜ私のコードが失敗したのか理解しました。あなたがしたことを説明できますか? :)さらに、あなたは私の質問が-1スコアを持つことがとても悪いと思いますか? :/ – gsamaras

+0

'any'は引数のすべての要素を評価します。最初の項目が 'query_id'にマッチすれば、その引数を形成するジェネレータ表現はTrueを返します。 – phihag

+0

フィハッドに感謝し、アップボートにも感謝します。 – gsamaras

2

forループ(リンクしたもののようなもの)に_という変数が定義されています。私が知る限り、どこにも定義していませんでした。 _は何を表現すると思いますか?

_は、インタラクティブなインタプリタ(最後の変数出力を表す)を除き、Pythonの通常の変数名です。

+0

これはコメントでなければなりません。私は、私がリンクしているトップの答えの3番目の項目を期待しています。さらに、私は '[tag:Python]'が自動的にそれを定義することを期待しています。 – gsamaras

+1

申し訳ありませんが、私はそれを更新し、その答えとしてより良いことを願っています。 –

1

ここで使用するコンセプトでは、最後の出力変数のみが格納されます。 私は一緒に行きます:

if query_id in (x[0] for x in hashtable[bucket]): 
+0

ニースのアプローチ、ありがとう! – gsamaras

関連する問題