将dicts列表转换为单个字典

时间:2017-10-03 22:46:27

标签: python list dictionary

对于以下内容,我如何根据“名称”验证获得“a_id”值及其“b_id”值。

[
{
    "name": "name1",
    "a_id": "12345",
    "b_id": "0d687c94c5f4"
},
{
    "name": "name2",
    "a_id": "67890",
    "b_id": "0d687c94c5f4"
},
{
    "name": "name3",
    "a_id": "23857",
    "b_id": "9ec34be3d535"
},
{
    "name": "name4",
    "a_id": "84596",
    "b_id": "9ec34be3d535"
},
{
    "name": "name5",
    "a_id": "d82ebe9815cc",
    "b_id": null
}

我用过两个值,比如

{result['a_id']: result['name'] for result in data}

但是对于第三个值,如果我像这样使用它将不会让我这样做。

{result['a_id']: result['name'], result['b_id']: result['name'] for result in data}

正确的语法是什么。

1 个答案:

答案 0 :(得分:2)

我认为使用嵌套循环的 dict理解可以解决这个问题:

data = {result[k] : result['name'] for result in data for k in ('a_id', 'b_id')}

您可以根据需要添加任意数量的密钥。如果它更有意义,请在变量keys中声明您的密钥:

keys = ('a_id', 'b_id', ...)
data = {result[k] : result['name'] for result in data for k in keys}