如何从键值对列表构建字典?

时间:2020-06-01 04:25:07

标签: python

我正在使用boto3获取具有以下格式的EC2实例标签

[{u'Value': 'swarm manager 0', u'Key': 'Name'}, {u'Value': 'manager', u'Key': 'Role'}]

我想将其转换为这样的字典

{'Name': 'swarm manager 0', 'Role': 'manager'}

这是我的代码

tags = [{u'Value': 'swarm manager 0', u'Key': 'Name'}, {u'Value': 'manager', u'Key': 'Role'}]
tag_dict = dict()
for tag in tags:
  tag_dict[tag['Key']]=tag['Value']
print(tag_dict)

https://repl.it/@trajano/GargantuanStickyNasm

似乎有些罗word,我认为应该做一两行python来完成转换。

2 个答案:

答案 0 :(得分:5)

Dict comprehensions是一件事:

tag_dict = {tag['Key']: tag['Value'] for tag in tags}

答案 1 :(得分:2)

与理解类似,dict接受可迭代的成对,也可以理解:

from operator import itemgetter
dict(map(itemgetter('Key', 'Value'), tags))

OR

dict(itemgetter('Key', 'Value')(x) for x in tags)

在python 3.6及更高版本中,字典是有序的,因此,如果您的字典在'Value'之前总是有'Key',则可以这样做

dict(x.values()[::-1] for x in tags)

当然,后一种方法在生产环境中不值得使用,因为它太不可靠了。