将[dict]中的所有键转换为python中的dict

时间:2019-11-15 02:50:11

标签: python python-3.x list dictionary

有什么优雅的方法可以将字典列表中的所有键转换为字典?像这样:

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']

2 个答案:

答案 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'}