python实现json/字典数据中所有key路径拼接组合
2023-09-11 14:15:14 时间
案例需求:
在已知的json数据或者字典数据中,获取所有key值的路径拼接值,并能够根据拼接路径获取对应的值。
示例代码:
import jmespath
data = {
"id": 1,
"name": '张三',
"age": 25,
"grade": {
"Chinese": 99,
"Math": 100
},
"records": [
{
"Chinese": 98,
"Math": 99
},
{
"Chinese": 97,
"Math": 97
}
]
}
# 方法一:
# 下面写法是最笨的方法,当迭代次数非常多时,要写好多循环,代码量也增加了
my_list = []
for key, value in data.items():
my_list.append(key)
if type(value) is dict:
for key2, value2 in data[key].items():
my_list.append(key + '.' + key2)
print(my_list)
# 方法二(递归实现):
def get_keys_path(dict_data, enable_index=None):
def dfs(dict_data, parent=''):
if not isinstance(dict_data, dict):
return
for key, value in dict_data.items():
if f"{key}.{value}" not in tmp_list:
tmp_list.append(f"{parent}.{key}")
if isinstance(value, dict):
dfs(value, parent=f"{parent}.{key}")
elif isinstance(value, list):
num = 0
for i in value:
if enable_index:
dfs(i, parent=f"{parent}.{key}[{num}]")
# dfs(i, parent=f"{parent}.{key}.{num}")
else:
dfs(i, parent=f"{parent}.{key}")
num += 1
else:
pass
tmp_list = []
dfs(dict_data, parent='')
if enable_index:
return [i[1:] for i in tmp_list]
else:
return [i[1:] for i in list(set(tmp_list))]
# 获取key路径组合
print(get_keys_path(data, 1))
# 获取key路径值
print(jmespath.search('records[1].Chinese', data))
运行结果:
更多jmespath库用法详见博文:python中jmespath库用法详解_IT之一小佬的博客-CSDN博客
相关文章
- Python 中 xpath 语法 与 lxml 库解析 HTML/XML 和 CSS Selector
- python魔法方法之-Python __repr__()方法:显示属性
- Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)
- 使用python读取csv文件中的数据
- python 自动化数据提取之正则表达式
- 交互式数据可视化,在Python中用Bokeh实现
- Python 程序构成
- python导出zabbix数据并发邮件脚本
- 《Python数据科学指南》——1.2 使用字典对象
- 《Python数据科学指南》——2.3 使用matplotlib进行绘画
- 《Python Cookbook(第3版)中文版》——6.2 读写JSON数据
- Python私有函数和公开函数
- python 数据的读取
- Python数据处理Tips多层嵌套Json数据展平到DataFrame
- Python地理空间栅格数据终极初学者指南您,全面了解的有关栅格文件、地理配准、元数据和 Rasterio Python 库的所有信息
- Python 网络教程大全之 05 如何获取url下载文件的大小?
- 《Python数据可视化之matplotlib实践》 源码 第一篇 入门 第二章
- 【Python】变量的进阶
- python之json数据存储
- 小学生python游戏编程arcade----单词对错检测及记录写入excel中