如何将返回的字典变成一个大列表?

时间:2019-04-06 00:44:30

标签: python python-2.7 list dictionary

我有一些代码可以查询我们在数据库中具有某些属性的作业。然后,我想单独隔离作业ID,但我将其返回到一堆不同的字典中。

如何将所有词典合并在一起,然后将其转换成仅包含工作ID的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':322792},{u'jid':3227985},{u'jid':3227984},{u 'jid':3227980},{u'jid':3229049},{u'jid':3228337}]

我想要什么:

  

[3207827、3221652、3221482、3221109、3229185、3225891、322893、3225982、3228960、3228956、3228950、3222802、3227226、322792、3227985、32279984、3227980、3229049、3228337]

2 个答案:

答案 0 :(得分:0)

使用以下理解:

>>> [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',因此您基本上是在获取与该键关联的值,并将其添加到动态创建的列表中。 / p>

答案 1 :(得分:0)

您可以在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]