辞書がusers = {}
と定義されていて、その辞書にいくつかのデータがあるとします。どのように辞書を検索すればいいですか?Python - 辞書を検索して特定の文字列を検索する方法は?
ここでは、ユーザー辞書を検索し、それが存在することがわかるので、何もしないでください。私のコードが間違っているのは分かっていますが、2行目で何を変えることができますか?
辞書がusers = {}
と定義されていて、その辞書にいくつかのデータがあるとします。どのように辞書を検索すればいいですか?Python - 辞書を検索して特定の文字列を検索する方法は?
ここでは、ユーザー辞書を検索し、それが存在することがわかるので、何もしないでください。私のコードが間違っているのは分かっていますが、2行目で何を変えることができますか?
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)
。
if socket.user in MyServer.users: # search if key is in dictionary
pass # do nothing
Um ...ユーザが 'for' /' in'ループに現れた場合、 'not in'テストがfalseであることが保証されていませんか? –
@Danielはいそれは – log0
私は何かが欠けている、またはこれは、あなたが探しているものです午前: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
ですが、 'pass'という特異なコマンドでは不要な' else'文です。 – PenguinCoder
@PenguinCoder:確かに。私はそれを追加して、流れをOPに明確にした。 –
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)
'if key in users.keys()'の代わりに、 'if key in users'を使うだけで、同じことを意味します。 –
'{}'は集合を定義するものではなく、常に辞書です。 (セットされたリテラルに対して '{...} 'を使うことができるPython 3でも) – kindall
ああ、混乱して、ごめんなさい – atomAltera
、' for'/' if'の組み合わせは無駄であり、単純な 'in'(または' not in')テストははるかに高速です。 –
@DanielPrydenあなたは正しいです。質問の質問者が描いた方法よりも早い。 – PenguinCoder