用于字典转换的Python列表

时间:2018-01-19 14:10:02

标签: python list dictionary type-conversion items

我得到一个包含三个项目的列表

[{item1},{item2},{item3}]

但每个项目都采用表格(包括curley括号):

{'key1': 'val1', 'key2': val2, 'key3': val3}

因此,当我打印我的列表时,它看起来像这样(同样,curley括号不是由我设置的,而是刚刚通过API响应输入看到的):

[{'key1': 'val1', 'key2': val2, 'key3': val3}, {'key4': 'val4', 'key5': val5, 'key6': val6}, {'key7': 'val7', 'key8': val8, 'key9':val9}]

我想要一个dict,每个项目中每个逗号分隔的key-val对都是一个元素。因此:

{'key1': 'val1', key2': val2, 'key3': val3, 'key4': 'val4', 'key5': val5, 'key6': val6, 'key7': 'val7', 'key8': val8, 'key9':val9}

我首先尝试制作一个只包含“item1”的新列表,因此新列表包含[{'key1': 'val1', 'key2': val2, 'key3': val3}]这个新列表的长度据说是3项,我想:完美!现在我可以通过newlist[0]访问key1-val1对,并使用{newlist[0],newlist[1],newlist[2]} to get {'key1': 'val1', 'key2': val2, 'key3': val3}提供dict,但这不起作用。

有什么建议吗? 我想curley括号是问题吗?我的意思是我找到了各种答案googleing“list to dict conversion”但是我所看到的都没有......

2 个答案:

答案 0 :(得分:0)

您可以通过理解来展平您的词典列表:

>>> d = [{'key1': 1, 'key2': 2, 'key3': 3}, {'key4': 4, 'key5': 5, 'key6': 6}, {'key7': 7, 'key8': 8, 'key9':9}]
>>> dict(x for y in d for x in y.items())
{'key1': 1, 'key2': 2, 'key3': 3, 'key4': 4, 'key5': 5, 'key6': 6, 'key7': 7, 'key8': 8, 'key9': 9}

然后您可以轻松访问任何密钥:

>>> d['key1']
1
>>> d['key9']
9

答案 1 :(得分:0)

查看此帖子:How do I merge a list of dicts into a single dict?

您正在寻找的是:

data = [{'key1': 'val1', 'key2': val2, 'key3': val3}, {'key4': 'val4', 'key5': val5, 'key6': val6}, {'key7': 'val7', 'key8': val8, 'key9':val9}]
res = {}
[ res.update(d) for d in data]