code: def zip_dicts(left, right, prefix=()):
      
      for key, left_value in left.items():
          path = prefix + (key, )
          right_value = right.get(key)
  
          if isinstance(left_value, dict):
              yield from zip_dicts(left_value, right_value or {}, path)
          else:
              yield path, left, left_value, right, right_value
docs: Modified zip through two dictionaries.
  
      Iterate through all keys of left dictionary, returning:
  
        -  A nested path
        -  A value and parent for both dictionaries