如何使用Python提取JSON文件中的二级键并存储为列表?
提取JSON二级键并存入列表的Python实现
嘿,这事儿不难,我给你捋清楚怎么用Python搞定这个需求!首先咱们得明确:这里的“二级键”指的是一级键对应的值(字典类型)里的键,比如你提到的uid、passid这些。下面分两种常见场景给你示例代码:
场景1:从JSON文件读取数据
如果你的JSON数据存在本地文件里,用这个方法:
import json # 第一步:加载JSON文件里的数据 with open('your_json_file.json', 'r', encoding='utf-8') as file: json_data = json.load(file) # 第二步:收集所有二级键 secondary_keys = [] for level1_value in json_data.values(): # 先判断一级值是不是字典,避免遇到非字典类型报错 if isinstance(level1_value, dict): # 把当前二级字典的键添加到列表里 secondary_keys.extend(level1_value.keys()) # 可选:如果需要去重(不同一级键下可能有重复的二级键) # 方法1:用集合去重(会打乱顺序) unique_keys = list(set(secondary_keys)) # 方法2:保持顺序的去重(Python3.7+可用) unique_keys_ordered = list(dict.fromkeys(secondary_keys)) # 输出结果 print("所有二级键(含重复):", secondary_keys) print("去重后的二级键(顺序随机):", unique_keys) print("去重后的二级键(保持首次出现顺序):", unique_keys_ordered)
场景2:直接处理Python字典(JSON已转成字典)
如果你的JSON数据已经在代码里转成了Python字典,直接这样操作:
# 假设这是你的JSON转成的Python字典示例 json_data = { "authentication": { "uid": "user_2024", "passid": "pass_123abc" }, "interface": { "signbuttonid": "btn_submit", "logoIcon": "app_logo.svg" }, "extra": "这是一个非字典的一级值,会被跳过" } secondary_keys = [] for val in json_data.values(): # 只处理字典类型的一级值 if isinstance(val, dict): secondary_keys += val.keys() # 去重并保持顺序 final_keys = list(dict.fromkeys(secondary_keys)) print("提取到的二级键:", final_keys)
关键说明
- 用
json.load()可以把JSON文件转成Python字典,方便后续操作; isinstance(val, dict)这个判断很重要,能避免当一级值是列表、字符串等非字典类型时抛出错误;- 如果不需要去重,直接用
secondary_keys列表就行;要是需要去重,根据是否要保留顺序选择对应的方法。
内容的提问来源于stack exchange,提问作者Deepak N
相关产品推荐
相关产品推荐

