创建嵌套字典的 Pythonic 方式

Tim*_*Tim 4 python dictionary nested list

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

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

c = dict(zip(b, a))
c = {k: v for k, v in zip(b, a)}
Run Code Online (Sandbox Code Playgroud)

输出是:

{3: 'a', 4: 'b'}
Run Code Online (Sandbox Code Playgroud)

想要的结果是:

{3: {'a': 1}, 4: {'b': 2}}
Run Code Online (Sandbox Code Playgroud)

我可以开始使用循环,但我认为没有必要。当然,之后我将需要再次扁平化这些字典。

AKX*_*AKX 5

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

  • 值得注意的是,在 Python 3.7 之前,无法保证此顺序 (2认同)