def get_chains_list(mmtf_dict, groups):
    """Creates a list of chain dictionaries from a .mmtf dictionary by zipping
    together some of its fields.

    :param dict mmtf_dict: the .mmtf dictionary to read.
    :rtype: ``list``"""
    chains = []
    for i_id, id, group_num in zip(mmtf_dict['chainIdList'], mmtf_dict[
        'chainNameList'], mmtf_dict['groupsPerChain']):
        chain = {'id': id, 'internal_id': i_id, 'groups': groups[:group_num]}
        del groups[:group_num]
        for entity in mmtf_dict['entityList']:
            if len(chains) in entity['chainIndexList']:
                chain['type'] = entity['type']
                chain['sequence'] = entity.get('sequence', '')
                chain['full_name'] = entity.get('description', None)
                break
        chains.append(chain)
    return chains
