You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以Pythonic方式从列表与字典创建嵌套字典并实现扁平化?

用Pythonic方式从列表和字典创建嵌套字典

嘿,我来帮你搞定这个问题!你现在的代码得到的结果和预期不符,是因为zip(b, a)是把字典b的键和列表a的元素配对,但你需要的是把a的元素作为外层字典的键,对应的值是包含b中对应键值对的小字典。

生成嵌套字典的Pythonic写法

直接用字典推导式就能搞定,完全不需要显式循环:

a = [3, 4]
b = {'a': 1, 'b': 2}
# 简洁版写法
c = {num: {key: b[key]} for num, key in zip(a, b)}

运行这段代码后,c的值就是你想要的:

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

逻辑解释:

  • zip(a, b)会把列表a的元素和字典b的键一一对应(遍历字典默认就是遍历键),得到配对(3, 'a')和(4, 'b')
  • 对于每一对(num, key),我们创建一个新的小字典{key: b[key]},作为外层字典中num对应的取值

后续扁平化嵌套字典的方法

如果之后需要把这个嵌套字典扁平化,同样可以用字典推导式快速实现:

普通扁平化(假设内层键唯一):

flattened = {inner_key: inner_val for outer_val in c.values() for inner_key, inner_val in outer_val.items()}

结果是:{'a': 1, 'b': 2}

保留外层键信息(避免内层键重复冲突):

如果担心内层键有重复,可以把外层键也加入到扁平化后的键中:

flattened = {f"{outer_key}_{inner_key}": inner_val for outer_key, outer_val in c.items() for inner_key, inner_val in outer_val.items()}

结果是:{'3_a': 1, '4_b': 2}

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 09:48:16