有什么优雅的方法可以将字典列表中的所有键转换为字典?像这样:
aa = [
{"option": "-c","params":4},
{"option": "-t", "params": 8},
{"option": "name", "params": "bb"}
]
bb = convert_function(aa)
print(bb) # will like the following
{
"-c": 4,
"-t": 8,
"name": "bb"
}
列表中dict中的所有键将始终(且仅)具有键:“选项”和“参数”
我现在的解决方法是:
aa = [
{"option": "-c","params":4},
{"option": "-t", "params": 8},
{"option": "name", "params": "bb"}
]
bb = dict()
for item in aa:
bb[item['option']] = item['params']
答案 0 :(得分:4)
由于字典采用某种格式,因此您可以简单地:
dict(x.values() for x in aa)
没有内置功能可以帮助您解决此问题。因此,您可以编写自定义函数,如下面的示例所示:
def convert_function(aa):
return dict(x.values() for x in aa)
aa = [
{"option": "-c","params":4},
{"option": "-t", "params": 8},
{"option": "name", "params": "bb"}
]
bb = convert_function(aa)
# {'-c': 4, '-t': 8, 'name': 'bb'}
答案 1 :(得分:1)
您可以使用dictionary comprehension
一行来完成此操作:
>>> aa = [{'option': '-c', 'params': 4}, {'option': '-t', 'params': 8}, {'option': 'name', 'params': 'bb'}]
>>> dict((item['option'], item['params']) for item in aa)
{
'-c': 4,
'-t': 8,
'name': 'bb'
}
如果您要为此使用“单行功能”,则可以使用lambda
:
>>> bb= lambda aa: dict((item['option'], item['params']) for item in aa)
>>> bb(aa)
{'-c': 4, '-t': 8, 'name': 'bb'}
如果您希望它更加紧凑(尽管我发现它的可读性较差),则可以执行以下操作:
>>> bb= lambda aa: dict(_.values() for _ in aa)
>>> bb(aa)
{'-c': 4, '-t': 8, 'name': 'bb'}