我有一些代码可以查询我们在数据库中具有某些属性的作业。然后,我想单独隔离作业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]
答案 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]