def METHOD_NAME(self, output_fn, eval_fn_list):
    all_results = {}
    for fn in eval_fn_list:
        eval_res = self.read_eval_file(fn)
        for metric in eval_res:
            if metric not in all_results:
                all_results[metric] = {}
            for qid in eval_res[metric]:
                if qid not in all_results[metric]:
                    all_results[metric][qid] = []
                all_results[metric][qid].extend( eval_res[metric][qid] )
    final_results = {}
    for metric in all_results:
        final_results[metric] = {}
        for qid in all_results[metric]:
            final_results[metric][qid] = {}
            all_results[metric][qid].sort(key=itemgetter(0), reverse=True)
            final_results[metric][qid]['max'] = {'value':all_results[metric][qid][0][0], 'para':all_results[metric][qid][0][1]}
    with open(output_fn, 'w') as o:
        json.dump(final_results, o, indent=2, sort_keys=True)