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

如何从Python嵌套字典中提取指定格式的键数据?

解决字典键提取的问题

我来帮你搞定这个问题!你遇到的问题本质是循环中重复赋值覆盖了之前的结果——对于'Doon-Gurgaon'这个键,你的循环会先把8赋值给它,接着又把6赋值过去,最后只保留了最后一次的结果。要实现你的需求,我们需要根据内层字典键的数量来决定赋值单个值还是列表,具体方案如下:

错误原因分析

你的原代码:

A = {"'Delhi-Mumbai'": {6: [3]}, "'Doon-Gurgaon'": {8: [6, 9, 8, 5], 6: [7, 1, 2]}}
new = {}
for k,v in A.items():
    for i,j in v.items():
        new[k]=i

这段代码中,每次内层循环都会给new[k]重新赋值,所以对于有多个内层键的'Doon-Gurgaon',最终只会保留最后一次遍历到的键(也就是6),这和你的预期不符。

正确实现代码

我们可以通过提取内层字典的所有键,再根据键的数量来处理:

A = {"'Delhi-Mumbai'": {6: [3]}, "'Doon-Gurgaon'": {8: [6, 9, 8, 5], 6: [7, 1, 2]}}
extracted = {}

for k, inner_dict in A.items():
    # 获取内层字典的所有键,转为列表
    keys = list(inner_dict.keys())
    # 根据键的数量决定赋值方式
    if len(keys) == 1:
        extracted[k] = keys[0]
    else:
        extracted[k] = keys

print(extracted)
# 输出:{"'Delhi-Mumbai'": 6, "'Doon-Gurgaon'": [8, 6]}

代码逻辑说明

  • 遍历原字典的每个外层键值对,inner_dict是对应内层的子字典。
  • 用list(inner_dict.keys())获取内层所有键的列表。
  • 如果列表长度为1,直接将单个键值赋值给extracted[k];如果长度大于1,就把整个列表赋值过去,完美匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:21:53