code: def data(self, *keys):
          
          if keys:
              d = {}
              for key in keys:
                  try:
                      i = self.index(key)
                  except KeyError:
                      d[key] = None
                  else:
                      d[self.__keys[i]] = self[i]
              return d
          return dict(self)
docs: Return the keys and values of this record as a dictionary,
          optionally including only certain values by index or key. Keys
          provided in the items that are not in the record will be
          inserted with a value of :const:`None`; indexes provided
          that are out of bounds will trigger an :exc:`IndexError`.
  
          :param keys: indexes or keys of the items to include; if none
                        are provided, all values will be included
          :return: dictionary of values, keyed by field name
          :raises: :exc:`IndexError` if an out-of-bounds index is specified