code: def get_sorted_nts_keep_section(self, hdrgo_prt):
          
          section_nts = []
          # print("SSSS SorterNts:get_sorted_nts_keep_section(hdrgo_prt={})".format(hdrgo_prt))
          hdrgos_actual = self.sortgos.grprobj.get_hdrgos()
          hdrgos_secs = set()
          hdrgo_sort = False if self.section_sortby is False else True
          secname_dflt = self.sortgos.grprobj.hdrobj.secdflt
          for section_name, section_hdrgos_all in self.sections:
              #section_hdrgos_act = set(section_hdrgos_all).intersection(hdrgos_actual)
              section_hdrgos_act = [h for h in section_hdrgos_all if h in hdrgos_actual]
              hdrgos_secs |= set(section_hdrgos_act)
              nts_section = self.sortgos.get_nts_sorted(hdrgo_prt, section_hdrgos_act, hdrgo_sort)
              if nts_section:
                  nts_section = self._get_sorted_section(nts_section)
                  section_nts.append((section_name, nts_section))
          remaining_hdrgos = hdrgos_actual.difference(hdrgos_secs)
          # Add GO group headers not yet used under new section, Misc.
          if remaining_hdrgos:
              nts_section = self.sortgos.get_nts_sorted(hdrgo_prt, remaining_hdrgos, hdrgo_sort)
              if nts_section:
                  nts_section = self._get_sorted_section(nts_section)
                  section_nts.append((secname_dflt, nts_section))
          return section_nts
docs: Get 2-D list: 1st level is sections and 2nd level is grouped and sorted namedtuples.