title: Ensure change of a string doesn't go unnoticed in other spots of a large program
body: <p><code>ALL_POSSIBLE_DOG_TOYS</code> is a <em>large</em> list containing the names of every single toy a dog owner can buy for his dog.</p>
  <pre><code>ALL_POSSIBLE_DOG_TOYS = ['large_chew_bone', 'treat_ball', .... ]
  </code></pre>
  <p>If the owner has bought a specific toy, it can affect the dog's happiness in various ways depending on some factors (e.g. dog breed, age etc).</p>
  <p>Therefore, in some places of my code I need to check whether a specific toy is purchased by the owner, that is, a toy is part of his <code>self.toys_purchased</code> list.</p>
  <p>e.g.</p>
  <pre><code># Check if a specific toy is bought.
  
  if 'treat_ball' in self.toys_purchased:
      # Do stuff with treat balls.
      # ...
  </code></pre>
  <p>I need to perform the above checks in various locations of a 15k LOC program.
  I also want to ensure that if I ever change the name of a toy in <code>ALL_POSSIBLE_DOG_TOYS</code>, <strong>I will not forget to also change</strong> its name in my <code>if</code> checks.</p>
  <hr />
  <p>One way to achieve that is by doing the following:</p>
  <pre><code>DOG_TOYS_AS_DICT = {
      'large_chew_bone': 'large_chew_bone',  
      'treat_ball': 'treat_ball',
      ...
      ...
  }
  </code></pre>
  <p>That is, create a dict with each key being the same as its value.</p>
  <p>Then use <code>DOG_TOYS_AS_DICT</code> values instead of using directly the actual toy name:</p>
  <pre><code># Check if a specific toy is bought.
  
  if DOG_TOYS_AS_DICT['treat_ball'] in self.toys_purchased:
      # Do stuff with treat balls.
      # ...
  </code></pre>
  <p>This way if I ever change <code>'treat_ball'</code> in <code>ALL_POSSIBLE_DOG_TOYS</code> to <code>'ball_with_treats'</code> I would get a (desired) KeyError in locations where I <code># Check if a specific toy is bought</code>, and so that I can change <code>'treat_ball'</code> to the new string.</p>
  <hr />
  <p><strong>Question:</strong><br />
  Is there a clearer way to ensure that changes to any of the toy names doesn't go unnoticed in the rest of the program?</p>