Сравнение элементов ключей в списке Python словарей и возврат ключа на основе максимального значения одного ключа и предпочтения другого - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть следующий список:

data = [{'contactCount': 0,
    'creationDate': 1581004876000,
    'lastModifiedDate': 1581004876000,
    'mailingListId': 'ML1010',
    'name': 'NIP_2020-02-06',
    'ownerId': 'GR_AB'},
{'contactCount': 0,
    'creationDate': 1581004875000,
    'lastModifiedDate': 1581004875000,
    'mailingListId': 'ML1011',
    'name': 'NH_2020-02-06',
    'ownerId': 'GR_AB'},
{'contactCount': 0,
    'creationDate': 1581004874000,
    'lastModifiedDate': 1581004874000,
    'mailingListId': 'ML1012',
    'name': 'LH_2020-02-06',
    'ownerId': 'GR_AB'},
{'contactCount': 0,
    'creationDate': 1580942151000,
    'lastModifiedDate': 1580942151000,
    'mailingListId': 'ML1013',
    'name': 'NIP_2020-02-05',
    'ownerId': 'GR_AB'},
{'contactCount': 0,
    'creationDate': 1580942151000,
    'lastModifiedDate': 1580942151000,
    'mailingListId': 'ML1014',
    'name': 'NH_2020-02-05',
    'ownerId': 'GR_AB'},
{'contactCount': 0,
    'creationDate': 1580942151000,
    'lastModifiedDate': 1580942151000,
    'mailingListId': 'ML1015',
    'name': 'LH_2020-02-05',
    'ownerId': 'GR_AB'},
{'contactCount': 5,
    'creationDate': 1580496243000,
    'lastModifiedDate': 1580496295000,
    'mailingListId': 'ML1016',
    'name': 'NIP_2020-02-01',
    'ownerId': 'GR_AB'}]

Мне нужен mailingListId, который имеет max (creationDate) и начинается с имени (NIP): output ML1010

Я пытался получить максимум (creationDate), используя фрагмент кода ниже:

mailingListId = max(data, key=lambda x:x['creationDate'])['mailingListId']

Однако мне нужно условие and с ключом name, начинающимся с 'NIP'

1 Ответ

1 голос
/ 08 февраля 2020

Вы можете использовать filter, чтобы применить другое условие:

mailingListId = max(
    filter(lambda x: x['name'][:3] == 'NIP', data),
    key=lambda x:x['creationDate']
)['mailingListId']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...