创建嵌套字典的Python方式

时间:2020-06-29 14:56:40

标签: python list dictionary nested

我正在寻找一种从列表和字典创建嵌套字典的Python方法。以下两个语句产生相同的结果:

a = [3, 4]
b = {'a': 1, 'b': 2}

c = dict(zip(b, a))
c = {k: v for k, v in zip(b, a)}

输出为:

{3: 'a', 4: 'b'}

所需的结果是:

{3: {'a': 1}, 4: {'b': 2}}

我可以开始使用循环,但是我不认为这是必要的。 当然,之后,我将需要重新整理这些词典。

3 个答案:

答案 0 :(得分:5)

>>> {k: {va: vb} for k, (va, vb) in zip(a, b.items())}
{3: {'a': 1}, 4: {'b': 2}}

答案 1 :(得分:2)

赞:

a = [3, 4]
b = {'a': 1, 'b': 2}
c = {i: {k:b[k]} for i,k in zip(a,b)}

print(c)

输出:

{3: {'a': 1}, 4: {'b': 2}}

答案 2 :(得分:-1)

我认为,一种更“ Pythonic”的方式将是使用更具描述性的变量名和dict()构造函数:

keys = [3, 4]
orig_dict = {'a': 1, 'b': 2}
nested_dict = {key: dict([item]) for (key, item) in zip(keys, orig_dict.items())}

另一种使用中间可迭代的方法:

sub_dicts = [dict([item]) for item in orig_dict.items()]
nested_dict = dict(zip(keys, sub_dicts))

最后,在这种情况下,仅使用循环就可以了:

nested_dict = {}
for key, item in zip(keys, orig_dict.items()):
    nested_dict[key] = dict([item])
相关问题