diff --git a/Lib/decimal.py b/Lib/decimal.py
index 5e2a750..220db1c 100644
--- a/Lib/decimal.py
+++ b/Lib/decimal.py
@@ -1723,8 +1723,6 @@
         # here self was representable to begin with; return unchanged
         return Decimal(self)
 
-    _pick_rounding_function = {}
-
     # for each of the rounding functions below:
     #   self is a finite, nonzero Decimal
     #   prec is an integer satisfying 0 <= prec < len(self._int)
@@ -1791,6 +1789,17 @@
         else:
             return -self._round_down(prec)
 
+    _pick_rounding_function = dict(
+        ROUND_DOWN = '_round_down',
+        ROUND_UP = '_round_up',
+        ROUND_HALF_UP = '_round_half_up',
+        ROUND_HALF_DOWN = '_round_half_down',
+        ROUND_HALF_EVEN = '_round_half_even',
+        ROUND_CEILING = '_round_ceiling',
+        ROUND_FLOOR = '_round_floor',
+        ROUND_05UP = '_round_05up',
+    )
+
     def fma(self, other, third, context=None):
         """Fused multiply-add.
 
@@ -3708,18 +3717,6 @@
 
 ##### Context class #######################################################
 
-
-# get rounding method function:
-rounding_functions = [name for name in Decimal.__dict__.keys()
-                                    if name.startswith('_round_')]
-for name in rounding_functions:
-    # name is like _round_half_even, goes to the global ROUND_HALF_EVEN value.
-    globalname = name[1:].upper()
-    val = globals()[globalname]
-    Decimal._pick_rounding_function[val] = name
-
-del name, val, globalname, rounding_functions
-
 class _ContextManager(object):
     """Context manager class to support localcontext().
 
