2012-05-07 14 views
1

辞書がusers = {}と定義されていて、その辞書にいくつかのデータがあるとします。どのように辞書を検索すればいいですか?Python - 辞書を検索して特定の文字列を検索する方法は?

ここでは、ユーザー辞書を検索し、それが存在することがわかるので、何もしないでください。私のコードが間違っているのは分かっていますが、2行目で何を変えることができますか?

答えて

1

pythonでは、passキーワードを本質的に「何もしない」ことができます。

for socket.user in MyServer.users: 
    if MyServer.users.has_key(socket.user) == False: 
     pass 

しかし、より適切な方法は、実行する方法でコードを書くことです。あなたがしなければならないことをしないでください。私は辞書を検索し、私の検索文字列が私の辞書に文字列と一致した場合、何もしない可能性がどのように

for socket.user in MyServer.users: 
    if MyServer.users.has_key(socket.user) == True: 
     MyServer.users[user].send(socket.message) 
+2

、' for'/' if'の組み合わせは無駄であり、単純な 'in'(または' not in')テストははるかに高速です。 –

+0

@DanielPrydenあなたは正しいです。質問の質問者が描いた方法よりも早い。 – PenguinCoder

3

if socket.user in MyServer.users: # search if key is in dictionary 
    pass # do nothing 
+0

Um ...ユーザが 'for' /' in'ループに現れた場合、 'not in'テストがfalseであることが保証されていませんか? –

+0

@Danielはいそれは – log0

0

私は何かが欠けている、またはこれは、あなたが探しているものです午前:MyServer.users`は、通常のPythonの辞書である `と仮定すると、

if socket.user in MyServer.users: 
    # Send a message if it's a valid user 
    MyServer.users[user].send(socket.message) 
else: 
    # Do nothing if it isn't 
    pass 
+0

ですが、 'pass'という特異なコマンドでは不要な' else'文です。 – PenguinCoder

+0

@PenguinCoder:確かに。私はそれを追加して、流れをOPに明確にした。 –

4
users = {"A": 0, "B": 1, "C": 2} 

key = "B" 
value = "2" 

if key in users: print("users contains key", key) 
if value in users.values(): print("users contains value", value) 
+1

'if key in users.keys()'の代わりに、 'if key in users'を使うだけで、同じことを意味します。 –

+1

'{}'は集合を定義するものではなく、常に辞書です。 (セットされたリテラルに対して '{...} 'を使うことができるPython 3でも) – kindall

+0

ああ、混乱して、ごめんなさい – atomAltera

関連する問題