Как превратить возвращаемые словари в один большой список? - PullRequest
1 голос
/ 06 апреля 2019

У меня есть небольшой кусочек кода, который запрашивает задания, которые у нас есть в базе данных, с определенными атрибутами. Затем я хочу выделить только идентификаторы заданий, что я и сделал, но он возвращает результаты в виде нескольких разных словарей.

Как я могу объединить все словари, а затем преобразовать их в 1 большой список только с идентификаторами заданий? Я использую Python 2.7.

import pprint


with aftractor.utils.tractor_connection() as tq:
    ma_jobs = tq.jobs('not done and maxactive', columns=['jid', 'title'])
    ma_search = tq.jobs('not done and maxactive', columns=['jid'])
    pp = pprint.PrettyPrinter(indent=4)
    pp.pprint(ma_jobs)

print ma_search

Возвращаемое значение:

[{u'jid ': 3207827}, {u'jid': 3221652}, {u'jid ': 3221482}, {u'jid': 3221109}, {u'jid ': 3229185}, { u'jid ': 3228951}, {u'jid': 3228953}, {u'jid ': 3228952}, {u'jid': 3228960}, {u'jid ': 3228956}, {u'jid': 3228950}, {u'jid ': 3228022}, {u'jid': 3227226}, {u'jid ': 3227982}, {u'jid': 3227985}, {u'jid ': 3227984}, {u 'jid': 3227980}, {u'jid ': 3229049}, {u'jid': 3228337}]

Что я хочу:

[3207827, 3221652, 3221482, 3221109, 3229185, 3228951, 3228953, 3228952, 3228960, 3228956, 3228950, 3228022, 3227226, 3227982, 3227985, 3227984, 3227980, 3229049, 322833

Ответы [ 2 ]

0 голосов
/ 06 апреля 2019

Вы можете сделать это, используя функцию map, сразу после ma_jobs = tq.jobs('not done and maxactive', columns=['jid', 'title']):

result = list(map(lambda elem: elem['jid'], ma_jobs))

Результат:

[3207827, 3221652, 3221482, 3221109, 3229185, 3228951, 3228953, 3228952, 3228960, 3228956, 3228950, 3228022, 3227226, 3227982, 3227985, 3227984, 3227980, 3229049, 3228337]
0 голосов
/ 06 апреля 2019

Используйте следующее понимание:

>>> [d[u'jid'] for d in ma_jobs]
[3207827,
 3221652,
 3221482,
 3221109,
 3229185,
 3228951,
 3228953,
 3228952,
 3228960,
 3228956,
 3228950,
 3228022,
 3227226,
 3227982,
 3227985,
 3227984,
 3227980,
 3229049,
 3228337]

По сути, вы используете понимание списка. Каждый элемент в ma_jobs - это словарь, в котором есть один элемент, ключ которого - u'jid', поэтому вы берете значение, связанное с этим ключом, и добавляете его в список, созданный на лету.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...