diff --git a/Lib/ftplib.py b/Lib/ftplib.py
index ef69ca6..9c190ba 100644
--- a/Lib/ftplib.py
+++ b/Lib/ftplib.py
@@ -171,7 +171,7 @@
     def sanitize(self, s):
         if s[:5] == 'pass ' or s[:5] == 'PASS ':
             i = len(s)
-            while i > 5 and s[i-1] in '\r\n':
+            while i > 5 and s[i-1] in {'\r', '\n'}:
                 i = i-1
             s = s[:5] + '*'*(i-5) + s[i:]
         return repr(s)
@@ -221,7 +221,7 @@
         if self.debugging: print('*resp*', self.sanitize(resp))
         self.lastresp = resp[:3]
         c = resp[:1]
-        if c in ('1', '2', '3'):
+        if c in {'1', '2', '3'}:
             return resp
         if c == '4':
             raise error_temp(resp)
@@ -245,7 +245,7 @@
         if self.debugging > 1: print('*put urgent*', self.sanitize(line))
         self.sock.sendall(line, MSG_OOB)
         resp = self.getmultiline()
-        if resp[:3] not in ('426', '225', '226'):
+        if resp[:3] not in {'426', '225', '226'}:
             raise error_proto(resp)
 
     def sendcmd(self, cmd):
@@ -375,7 +375,7 @@
         if not user: user = 'anonymous'
         if not passwd: passwd = ''
         if not acct: acct = ''
-        if user == 'anonymous' and passwd in ('', '-'):
+        if user == 'anonymous' and passwd in {'', '-'}:
             # If there is no anonymous ftp password specified
             # then we'll just use anonymous@
             # We don't send any other thing because:
@@ -534,7 +534,7 @@
     def delete(self, filename):
         '''Delete a file.'''
         resp = self.sendcmd('DELE ' + filename)
-        if resp[:3] in ('250', '200'):
+        if resp[:3] in {'250', '200'}:
             return resp
         else:
             raise error_reply(resp)
@@ -897,9 +897,9 @@
     # transfer request.
     # So: STOR before RETR, because here the target is a "user".
     treply = target.sendcmd('STOR ' + targetname)
-    if treply[:3] not in ('125', '150'): raise error_proto  # RFC 959
+    if treply[:3] not in {'125', '150'}: raise error_proto  # RFC 959
     sreply = source.sendcmd('RETR ' + sourcename)
-    if sreply[:3] not in ('125', '150'): raise error_proto  # RFC 959
+    if sreply[:3] not in {'125', '150'}: raise error_proto  # RFC 959
     source.voidresp()
     target.voidresp()
 
