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

Python如何从已解析的单键字典构成的JSON列表中提取键与值

遍历提取列表嵌套单键字典的键值实现方案

问题根因

你之前的写法拿不到结果,核心是对Python原生字典的访问方式理解有偏差:

  • 你拿到的解析后JSON结构,本质是列表嵌套独立字典,每个列表元素都是普通的Python字典,根本没有.key、.value这类内置属性
  • 写data.key时,Python会把它解析为“查询data字典中键为key的对应值”,完全不是你预期的“拿到字典本身的键”,自然会触发AttributeError、或者返回None的异常结果。

可直接跑通的实现方法

首先提醒一个编码习惯问题:不要把你的列表变量直接命名为json,这个名称是Python官方JSON解析库的模块名,同名会覆盖模块引用,导致后续JSON相关功能失效,建议改成比如parsed_data这类语义化的变量名。

方法1:通用遍历写法(适配任意键值对数量的字典)

不管每个字典里存几个键值对,这种写法都能正常遍历:

parsed_data = [
    {'minecraft.net': 'green'},
    {'session.minecraft.net': 'green'},
    {'account.mojang.com': 'green'},
    {'authserver.mojang.com': 'green'},
    {'sessionserver.mojang.com': 'red'},
    {'api.mojang.com': 'green'},
    {'textures.minecraft.net': 'green'},
    {'mojang.com': 'green'}
]

for item in parsed_data:
    # 遍历当前字典的所有键值对
    for domain, status in item.items():
        print(domain)  # 输出字典的键,比如 minecraft.net
        print(status)   # 输出对应的值,比如 green

方法2:针对单键字典的简化写法

因为你的结构里每个字典都只存1个键值对,不需要嵌套循环的话可以直接提取:

for item in parsed_data:
    domain = list(item.keys())[0]
    status = list(item.values())[0]
    print(f"{domain}: {status}")

运行效果参考

用上面的代码跑你给出的Mojang服务状态数据,输出结果为:

minecraft.net: green
session.minecraft.net: green
account.mojang.com: green
authserver.mojang.com: green
sessionserver.mojang.com: red
api.mojang.com: green
textures.minecraft.net: green
mojang.com: green

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 09:15:10