浅尝ChatGPT使用之Python字典嵌套排序
一、背景
所负责的项目从v1.0升级到v2.0之后,发送到kafka的Json数据字段顺序和内容有所改变,
v1.0版本推送数据样例:
{"name": "小王子","author": "安托万·德·圣-埃克苏佩里(1900-1944)","platform": "京东","detailinfo": {"commodity code": "12157218","published date": "2017-02-01","published house": " 浙江文艺出版社","number of pages": 208},"content": "遥远星球上的小王子,与美丽而骄傲的玫瑰吵架负气出走,在各星球漫游中,小王子遇到了傲慢的国王,一个任性的酒鬼,一个唯利是图的商人,一个死守教条的地理学家,而后来到地球上,试图找到治愈孤独和痛苦的良方。这时,他遇到一只渴望被驯养的狐狸,于是奇妙而令人惊叹的事情发生了","price": 26.5
}
v2.0版本推送数据样例:
{"name": "小王子","author": "安托万·德·圣-埃克苏佩里(1900-1944)","content": "遥远星球上的小王子,与美丽而骄傲的玫瑰吵架负气出走,在各星球漫游中,小王子遇到了傲慢的国王,一个任性的酒鬼,一个唯利是图的商人,一个死守教条的地理学家,而后来到地球上,试图找到治愈孤独和痛苦的良方。这时,他遇到一只渴望被驯养的狐狸,于是奇妙而令人惊叹的事情发生了","detailinfo": {"published house": " 浙江文艺出版社","published date": "2017-02-01","commodity code": "12157218","number of pages": 208},"Price": 26.5,"platform": "京东"
}
为了方便diff出两个版本的数据差异,需要先对字典数据进行排序
二、需求
如何用Python3实现一个嵌套字典排序?
三、实现
3.1 实现思路
- 自己编程实现:呃呃~,对于一个菜鸟测试人员来说,这不是为难我嘛
- 搜索引擎上查查资料: 搜索结果五花八门,看着头大
- ChatGPT: 听说ta写代码能力很在行,今天试试看,说干就干
3.2 具体实现
流程图:

ChatGPT问答结果

def recursive_dict_sort(dictionary):if isinstance(dictionary, dict):return {k: recursive_dict_sort(v) for k, v in sorted(dictionary.items())}elif isinstance(dictionary, list):return [recursive_dict_sort(v) for v in dictionary]else:return dictionary
完整程序代码:
import jsondef recursive_dict_sort(dictionary):if isinstance(dictionary, dict):return {k: recursive_dict_sort(v) for k, v in sorted(dictionary.items())}elif isinstance(dictionary, list):return [recursive_dict_sort(v) for v in dictionary]else:return dictionarydef read_data():with open('data_before_sort.json', 'r') as data_file:data = json.load(data_file)return dataif __name__ == '__main__':kafka_data = read_data()res = recursive_dict_sort(kafka_data)res = json.dumps(res,indent=4, ensure_ascii=False) #格式化json输出with open('data_after_sort.json', 'w', encoding='utf-8') as f:f.writelines(res)print(res)
四、效果
排序前diff:

排序后diff:

进行diff,惊喜发现,price中的p字母,两个版本大小写不一致,喜提一个bug
五、收益
diff发现两个版本字母大小写不一致问题
相关文章:
浅尝ChatGPT使用之Python字典嵌套排序
一、背景 所负责的项目从v1.0升级到v2.0之后,发送到kafka的Json数据字段顺序和内容有所改变, v1.0版本推送数据样例: {"name": "小王子","author": "安托万德圣-埃克苏佩里(1900-1944&#…...
最大网络流算法之dinic算法详解
1、题目描述 On the Internet, machines (nodes) are richly interconnected, and many paths may exist between a given pair of nodes. The total message-carrying capacity (bandwidth) between two given nodes is the maximal amount of data per unit time that can b…...
051、面试必刷TOP101--链表(230503)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言链表1、BM1 反转链表2、BM2 链表内指定区间反转3、BM3 链表中的节点每k个一组翻转4、BM4 合并两个排序的链表5、BM5 合并k个已排序的链表6、BM6 判断链表中是否…...
开源中国面试准备
dockerFile常见命令 1、FROM 设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上下载 2、MAINTAINER 镜像作者的信息,比如名字或邮箱地址 语法:MAINTAINER n…...
基于J2EE的B2C电子商务系统开发与实现
摘要 当今社会,科学技术突飞猛进,知识经济初见端倪。电子商务作为一种新型的贸易方式,极大地促进了全球经济贸易的发展,同时也正在改变人们的生活方式和思想观念。电子商务是指整个贸易活动实现电子化,交易各方以电子交易方式而进行的商业交易。世界贸易组织电子商务专题报告定…...
三分钟教你看懂 spring 官方文档
新手如何学会查看官方文档API 首先进入官网:这里以 spring boot 为例 ,进入spring 官方地址 我们进入 spring boot 这里我们要看文档当然是要 learn 了,所以点进去。 我需要的东西在 IO 模块里面,点 IO 进入 发送邮件是不是有了…...
基于simulink使用射频模块集天线块对天线阵列的射频系统进行建模
一、前言 本 例 说明 如何 对 包括 天线 阵列 的 MIMO 接收 和 发射 RF 系统 进行 建模。该设计从单个RF链的预算分析开始,然后扩展到多个天线。RF Blockset 天线模块对天线阵列进行全波分析,支持对效应和缺陷进行高保真建模,并结合射频系统的…...
从小学习编程的路线与编程进阶
对于从小学习编程的学生,通常会从基础的编程概念和语法开始学习。以下是一个可能的路线: 1. 学习计算机基础知识,包括计算机硬件、操作系统和网络等基本概念。 2. 掌握基本的编程概念和语法,例如变量、数据类型、条件语句和循环语…...
[实训] 实验1-SPI数据传输基础实验(上)
目 录 一、实验目的 二、实验仪器及器件 三、实验内容及原理 四、实验步骤 五、实验测试数据表格记录 六、实验数据分析及处理 七、实验结论与感悟 一、实验目的 使用FPGA/ARM实现SPI数据传输实验;实现数据传输程序的编写、下载…...
微软骚操作恶心Win10用户,上网得先看广告
IE 浏览器在几个月前被彻底禁用,预装了快30年的老古董也确实到了退役的时候。 而微软也早有准备,2015年随着 Win10 发布推出了 Microsoft Edge 浏览器。 2020年迁移到 Chromium 内核让其成为了主流浏览器之一。 和 Chromium 系其他浏览器一样支持扩展插…...
为了做低代码平台,这些年我们对.NET的DataGridView做的那些扩展
我们的低代码开发平台从一开始决定做的时候,就追求未来能够支持多种类型的客户端,目前支持Winform,Web,H5,FlutterAPP,当然了,未来也有可能会随着实际的需要淘汰掉一些客户端的。 为了系统更易…...
洛谷 子集积 题解
题目 P1 背包 子集积 > m >m >m 个数并不好求,考虑子集积 ≤ m \le m ≤m 的个数 x x x,答案即为 ( 2 n − x ) (2^n - x) (2n−x)。 对于子集积 ≤ m \le m ≤m 的个数,可以化为 0-1 背包问题做, f i , j f_{i,…...
Boost笔记 1:下载、编译、安装、测试
1. 下载 当前版本是1.82,下载链接: https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/ 2. 安装编译依赖库 本地环境是Ubuntu 22.04,需要安装以下依赖库,部分影响boost相关功能的开启,部分影响编译…...
tiechui_lesson01_入口函数和卸载函数
主要讲解入口函数和卸载函数。 #include <ntifs.h>VOID nothing(HANDLE ppid, HANDLE mypid, BOOLEAN bcreate) {UNREFERENCED_PARAMETER(ppid);UNREFERENCED_PARAMETER(mypid);UNREFERENCED_PARAMETER(bcreate);DbgPrint("processNotify\n"); }VOID DriverU…...
密码学【java】初探究加密方式之非对称加密
文章目录 非对称加密1 常见算法2 生成公钥和私钥3 私钥加密4 私钥加密 公钥解密5 公钥和私钥的保存和读取5.1 **保存公钥和私钥**5.2 读取公钥和私钥 非对称加密 非对称加密算法又称现代加密算法。非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。与对…...
网络安全和黑客技能:15本必读书籍推荐
前言 网络安全和黑客技能紧密相连。想要有效地防范黑客攻击,了解黑客的技能和思维方式非常重要。而要想成为一名合格的白帽黑客,也需要深入理解网络安全的基本原理和最佳实践。本文将介绍15本网络安全和黑客书籍,既包括了防范黑客攻击的指南…...
电话号码的字母组合
题目:17. 电话号码的字母组合 - 力扣(Leetcode) 思路: 给定一个电话号码字符串 digits,须输出它所能表示的所有字母组合。我们可以先定义一个数字字符到字母表的映射表 numToStr,然后再用 Combine 函数递归…...
PAT A1032 Sharing
1032 Sharing 分数 25 作者 CHEN, Yue 单位 浙江大学 To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the same sublist if they share the same suffix. For example, l…...
Git常见问题汇总
问题:Your branch is ahead of ‘origin/master’ by 1 commit 原因:你的本地分支高于远程仓库一次提交, 同步更新下,执行命令: git push origin master问题:warning: LF will be replaced by CRLF in main.lua The …...
设计模式之代理模式(静态代理动态代理)
目录 1、什么是代理模式 2、代理模式的结构 3、代理模式的实现 3.1 静态代理和动态代理概念 3.2 静态代理 3.3 动态搭理 3.3.1 代码实现 3.3.2 Proxy类讲解 4、动态代理VS静态代理 5、代理模式优缺点 1、什么是代理模式 由于某些原因需要给某对象提供一个代理以控制对…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
