code: def wrap_evaluation_result(self, result_list):
      field = [
          "dial_id",
          "turn_num",
          "user",
          "bspn_gen",
          "bsdx",
          "resp_gen",
          "resp",
          "aspn_gen",
          "aspn",
          "dspn_gen",
          "dspn",
          "bspn",
          "pointer",
      ]
  
      id_to_list_dict = {}
      id_list, visited_set = [], set()
      for item in result_list:
          one_dial_id = item["dial_id"]
          try:
              id_to_list_dict[one_dial_id].append(item)
          except KeyError:
              id_to_list_dict[one_dial_id] = [item]
          if one_dial_id in visited_set:
              pass
          else:
              id_list.append(one_dial_id)
              visited_set.add(one_dial_id)
      # print (len(id_list))
      res_list = []
      for one_id in id_list:
          one_session_list = id_to_list_dict[one_id]
          session_len = len(id_to_list_dict[one_id])
          entry = {"dial_id": one_id, "trun_num": session_len}
          for f in field[2:]:
              entry[f] = ""  # ???
          res_list.append(entry)
          for one_turn in one_session_list:
              res_list.append(one_turn)
      return res_list
  
imports: import math, logging, copy, json
  from collections import Counter, OrderedDict
  from nltk.util import ngrams
  from .None import ontology
  from .clean_dataset import clean_slot_values
label_desc: Use image node_id 2 for calling the MultiWozEvaluator obj's underlying member method code with example usage: obj.wrap_evaluation_result(result_list) and returns: res_list