2012-05-07 37 views
1

如果我有一個字典定義爲users = {},並且可以說我在該字典中有一些數據,那麼如何通過字典進行搜索,並且如果我的搜索字符串與我的字典中的字符串匹配,則什麼也不做。Python - 如何搜索特定字符串的字典?

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

因此,這裏是搜索用戶字典,並發現它存在,所以它應該什麼也不做。我知道我的代碼是錯誤的,但是我可以在第二行更改什麼?

回答

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

假設'MyServer.users'是一個普通的Python字典,則'for' /'如果「組合是浪費,並且簡單的'in'(或'in in')測試會快得多。 –

+0

@DanielPryden你是對的; 「in/in in」比提問者所描繪的方法更快。 – PenguinCoder

3

我怎麼可能通過字典搜索,如果我的搜索字符串在我的字典中的字符串匹配無能爲力。

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

嗯......如果用戶在'for' /'in'循環中出現,是不是保證是false? –

+0

@丹尼爾是的,它是 – log0

0

我失去了一些東西,或者這是你在找什麼:

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

不必要的'else'語句,雖然有'pass'的單數命令。 – PenguinCoder

+0

@PenguinCoder:確實。我只是添加它才能使流程清晰。 –

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

而不是'如果key在users.keys()'中,你可以使用'if key in users' - 它意味着同樣的事情。 –

+1

'{}'沒有定義一個集合,它總是一個字典。 (即使在Python 3中,你可以使用'{...}'設置文字。) – kindall

+0

哦,是的,我很困惑,對不起 – atomAltera