title: itertools.izip (and _longest) dictionary incomplete
body: <p>I'm using Python itertools to zip two lists into a dictionary. The first list contains 63 single character strings, while the second list contains contains 63 lists all containing 63 single character strings.</p>
  
  <p>A single entry of the completed dictionary should look something like this:</p>
  
  <pre><code>{'S': ['X', 'D', '2', 'Y', 'd', 'K', '6', '0', '1', 'S', '9', 's', 'm', 'b', 't', 'k', 'G', 'j', 'n', 'v', 'O', 'x', 'U', 'h', 'P', 'B', 'V', 'C', '4', 'N', 'g', 'T', 'H', 'F', 'q', 'y', 'L', 'E', '3', '8', '5', 'A', 'a', 'W', 'o', 'w', 'c', 'r', 'z', 'Space', '7', 'p', 'I', 'e', 'u', 'f', 'Z', 'R', 'M', 'i', 'Q', 'l', 'J']}
  </code></pre>
  
  <p>The length of each list to be zipped is 63, but the dictionary that is returned is always varies between 36 and 45 and never reaches the full amount of 63.</p>
  
  <p>Here is the code I'm working with:</p>
  
  <pre><code>def obfuscation(character_list):    
      print('Building cipher, please wait...')
      import itertools
      import random
      assigned_list = character_list
      cipher_list = []
      cipher_reference = []    
      for item in character_list:
          random.shuffle(assigned_list)        
          cipher_list.append(assigned_list)
          cipher_reference.append(item)        
  
      print(len(cipher_reference))
      print(len(cipher_list)) 
      cipher = dict(itertools.izip_longest(cipher_reference, cipher_list))
      raw_input(len(cipher))
      return cipher
  </code></pre>
  
  <p>Returns:</p>
  
  <pre><code>Building cipher, please wait...
  63
  63
  41
  </code></pre>
  
  <p>Why is this happening, and what can I do to fix it?</p>