当前位置: 首页 > news >正文

浅尝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 实现思路

  1. 自己编程实现:呃呃~,对于一个菜鸟测试人员来说,这不是为难我嘛
  2. 搜索引擎上查查资料: 搜索结果五花八门,看着头大
  3. 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 读取公钥和私钥 非对称加密 非对称加密算法又称现代加密算法。非对称加密是计算机通信安全的基石&#xff0c;保证了加密数据不会被破解。与对…...

网络安全和黑客技能:15本必读书籍推荐

前言 网络安全和黑客技能紧密相连。想要有效地防范黑客攻击&#xff0c;了解黑客的技能和思维方式非常重要。而要想成为一名合格的白帽黑客&#xff0c;也需要深入理解网络安全的基本原理和最佳实践。本文将介绍15本网络安全和黑客书籍&#xff0c;既包括了防范黑客攻击的指南…...

电话号码的字母组合

题目&#xff1a;17. 电话号码的字母组合 - 力扣&#xff08;Leetcode&#xff09; 思路&#xff1a; 给定一个电话号码字符串 digits&#xff0c;须输出它所能表示的所有字母组合。我们可以先定义一个数字字符到字母表的映射表 numToStr&#xff0c;然后再用 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常见问题汇总

问题&#xff1a;Your branch is ahead of ‘origin/master’ by 1 commit 原因&#xff1a;你的本地分支高于远程仓库一次提交, 同步更新下&#xff0c;执行命令&#xff1a; git push origin master问题&#xff1a;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、什么是代理模式 由于某些原因需要给某对象提供一个代理以控制对…...

在Hermes Agent项目中集成Taotoken实现自定义模型供应商的切换

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Hermes Agent项目中集成Taotoken实现自定义模型供应商的切换 1. 场景与目标 Hermes Agent 是一个功能强大的智能体开发框架&…...

SPT-AKI存档编辑器完全手册:单机版塔科夫终极存档修改指南

SPT-AKI存档编辑器完全手册&#xff1a;单机版塔科夫终极存档修改指南 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com/gh_mirro…...

基于OneBot协议与Go语言的QQ机器人框架Samantha开发实践

1. 项目概述&#xff1a;一个开源的QQ机器人框架 最近在折腾QQ机器人&#xff0c;想给自己的社群或者频道加点自动化功能&#xff0c;比如定时提醒、关键词回复、游戏查询什么的。市面上现成的机器人框架不少&#xff0c;但要么功能臃肿&#xff0c;要么配置复杂&#xff0c;要…...

2026论文降AI实战SOP:保留排版格式,8款工具与结构级优化指南

内容ai率检测数值太高&#xff0c;不得不熬夜改了一遍又一遍&#xff0c;润色到想吐&#xff0c;结果检测报告上数字还是不尽人意&#xff0c;截止日期越逼越近&#xff0c;真的是没办法了。 我花了整整三天&#xff0c;把2026全网热门的几十款降AI工具通通测了个遍&#xff0…...

APP好像测试全都通过了--隐私测试--兼容性测试--安全测试

...

用Python+CCA算法搞定SSVEP脑电信号识别:从理论到代码实战(附GitHub源码)

PythonCCA算法实现SSVEP脑电信号识别实战指南 在脑机接口研究领域&#xff0c;稳态视觉诱发电位&#xff08;SSVEP&#xff09;因其高信噪比和稳定特性成为热门研究方向。典型相关分析&#xff08;CCA&#xff09;作为SSVEP信号处理的经典算法&#xff0c;以其数学优雅和实现简…...

Zynq/ZynqMP PL端以太网实战:手把手教你用GMII to RGMII IP和EMIO打通网络(附KSZ9031 PHY驱动修改)

Zynq/ZynqMP PL端以太网实战&#xff1a;从硬件配置到驱动适配全流程解析 在嵌入式系统开发中&#xff0c;以太网通信是许多项目的核心需求。当我们需要在Zynq或ZynqMP平台上实现PL端以太网功能时&#xff0c;往往会遇到硬件IP配置和PHY驱动适配两大挑战。本文将带你完整走通从…...

R语言数据清洗避坑指南:melt()函数参数详解与常见错误排查

R语言数据清洗避坑指南&#xff1a;melt()函数参数详解与常见错误排查 数据清洗是数据分析过程中最关键的环节之一&#xff0c;而R语言中的melt()函数作为数据重塑的利器&#xff0c;在实际应用中却常常让用户陷入各种"坑"。本文将深入剖析melt()函数的参数设置与常见…...

小熊猫Dev-C++:5个理由让你爱上这款轻量级C++开发工具

小熊猫Dev-C&#xff1a;5个理由让你爱上这款轻量级C开发工具 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 在C编程的世界里&#xff0c;寻找一个既功能强大又简单易用的开发环境常常让初学者望而却步。…...

如何快速集成Prometheus和Jaeger:Echo框架第三方中间件终极指南

如何快速集成Prometheus和Jaeger&#xff1a;Echo框架第三方中间件终极指南 【免费下载链接】echo High performance, minimalist Go web framework 项目地址: https://gitcode.com/gh_mirrors/ec/echo Echo是一个高性能、极简的Go Web框架&#xff0c;为开发者提供了轻…...