diff --git a/Lib/logging/config.py b/Lib/logging/config.py
index 7927e76..1b0faca 100644
--- a/Lib/logging/config.py
+++ b/Lib/logging/config.py
@@ -460,7 +460,7 @@
             c = self.resolve(c)
         props = config.pop('.', None)
         # Check for valid identifiers
-        kwargs = dict((k, config[k]) for k in config if valid_ident(k))
+        kwargs = {k: config[k] for k in config if valid_ident(k)}
         result = c(**kwargs)
         if props:
             for name, value in props.items():
@@ -723,7 +723,7 @@
                 config['address'] = self.as_tuple(config['address'])
             factory = klass
         props = config.pop('.', None)
-        kwargs = dict((k, config[k]) for k in config if valid_ident(k))
+        kwargs = {k: config[k] for k in config if valid_ident(k)}
         try:
             result = factory(**kwargs)
         except TypeError as te:
diff --git a/Lib/pstats.py b/Lib/pstats.py
index 1b57d26..ded5ae5 100644
--- a/Lib/pstats.py
+++ b/Lib/pstats.py
@@ -530,7 +530,7 @@
         if func in new_callers:
             if isinstance(caller, tuple):
                 # format used by cProfile
-                new_callers[func] = tuple(i[0] + i[1] for i in zip(caller, new_callers[func]))
+                new_callers[func] = tuple(i + j for i, j in zip(caller, new_callers[func]))
             else:
                 # format used by profile
                 new_callers[func] += caller
diff --git a/Lib/turtle.py b/Lib/turtle.py
index 8909fe9..9db564b 100644
--- a/Lib/turtle.py
+++ b/Lib/turtle.py
@@ -3839,7 +3839,7 @@
         docsdict[key] = eval(key).__doc__
 
     with open("%s.py" % filename,"w") as f:
-        keys = sorted(x for x in docsdict.keys()
+        keys = sorted(x for x in docsdict
                       if x.split('.')[1] not in _alias_list)
         f.write('docsdict = {\n\n')
         for key in keys[:-1]:
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index 2b76942..5b962f7 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -1286,7 +1286,8 @@
         h.set_debuglevel(self._debuglevel)
 
         headers = dict(req.unredirected_hdrs)
-        headers.update((k, v) for k, v in req.headers.items() if k not in headers)
+        headers.update({k: v for k, v in req.headers.items()
+                        if k not in headers})
 
         # TODO(jhylton): Should this be redesigned to handle
         # persistent connections?
