Append dict to list of dict

Viewed 48

I'm getting members from a Google group using the directory API. This is what is returned:

{'etag': '"..."',
 'kind': 'admin#directory#members',
 'members': [{'email': 'a@a.com',
              'etag': '"..."',
              'id': '....',
              'kind': 'admin#directory#member',
              'role': 'MEMBER',
              'type': 'USER'},
             {'email': 'b@a.com',
              'etag': '"..."',
              'id': '...',
              'kind': 'admin#directory#member',
              'role': 'MEMBER',
              'type': 'USER'},
              ...],
'nextPageToken': '...'}

There are multiple pages being returned and I want to append the next set of members to the members key of this dictionary...I think.

Here is my code so far:

for group in groups_list:
    members_service = service.members()
    member_request = members_service.list(groupKey=group['email'], maxResults=200, roles='MEMBER')     
    memberEmails = {}
    while member_request is not None:
        member_results = member_request.execute()
        memberEmails.update(member_results)
        member_request = members_service.list_next(member_request, member_results)

I don't think memberEmails.update(member_results) will work here because it overwrites and updates existing keys.

How can I accomplish this? or what are some alternatives?

1 Answers

I wonder if you want to treat memberEmails like a list and extend it with the value associated with the members key in the result. For example:

for group in groups_list:
    members_service = service.members()
    member_request = members_service.list(groupKey=group['email'], maxResults=200, roles='MEMBER')     
    member_emails = list()
    while member_request is not None:
        member_results = member_request.execute()
        member_emails.extend(member_request['members'])
        member_request = members_service.list_next(member_request, member_results)
Related