我正在寻找一种Pythonic方法来从列表和字典中创建嵌套字典。 下面的两个语句产生了相同的结果:
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}}
我可以开始使用循环,但我不认为这是必要的。 然后,我又需要把那些字典弄平。
>>> {k: {va: vb} for k, (va, vb) in zip(a, b.items())}
{3: {'a': 1}, 4: {'b': 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}}
在我看来,一种更“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())}