def test_build_dict(list_for_dict): """Test the list to dict function, based on a specific key.""" dict_from_list = build_dict(list_for_dict, 'id') assert dict_from_list[0]['value'] == 'John' assert dict_from_list[1]['value'] == 'Mark' assert dict_from_list[2]['value'] == 'Bruce' dict_from_list = build_dict(list_for_dict, 'value') assert dict_from_list['John']['age'] == 20 assert dict_from_list['Mark']['age'] == 27 assert dict_from_list['Bruce']['age'] == 9
def _get_authors_and_collab(self, article, dois): authors = [] collaboration = [] for author in article['authors']: if author['type'] == 'Person': author_affiliations = [] if 'affiliations' in article and 'affiliationIds' in author: affiliations = build_dict(article['affiliations'], 'id') for aff_id in author['affiliationIds']: author_affiliations.append( {'value': affiliations[aff_id]['name']}) surname = '' given_name = '' raw_name = '' if author.get('surname'): surname = author.get('surname').replace('\u2009', ' ') if author.get('firstname'): given_name = author.get('firstname').replace('\u2009', ' ') if author.get('name'): raw_name = author.get('name').replace('\u2009', ' ') authors.append({ 'surname': surname, 'given_names': given_name, "raw_name": raw_name, 'affiliations': author_affiliations }) elif author['type'] == 'Collaboration': collaboration.append(author['name']) if not authors: logger.error('No authors found for article %s.' % dois) return authors, collaboration