code: def copy_random_pointer_v2(head):
      
      copy = defaultdict(lambda: RandomListNode(0))
      copy[None] = None
      node = head
      while node:
          copy[node].label = node.label
          copy[node].next = copy[node.next]
          copy[node].random = copy[node.random]
          node = node.next
      return copy[head]
docs: :type head: RandomListNode
      :rtype: RandomListNode