JSON
轻量级 的数据交换格式,主要用于服务器与客户端之间的传输数据
常用于:
-
Web API数据传输
-
配置文件
-
前后端通信
-
数据存储
-
不同于语言之间的数据转换
基本结构
-
对象(键值对的集合)
-
数组(值的有序列表)
JSON键值规则
键 必须使用双引号
值 支持六种数据类型
| 类型 | 示例 |
|---|---|
| 字符串 String | "hello" |
| 数字 Number | 123 |
| 布尔 Boolean | true |
| 空值 Null | null |
| 对象 Object | {} |
| 数组 Array | [] |
对象和数组嵌套
最大的特点:可以无限嵌套
注意
-
对象内部不可以直接嵌套 数组
cpp
{
"name":"cjj",
[20,202401] ×××××
}
python
{} //object key:value
{
"name":"cjj",
"id":"202401",
"age":20,
"love":[study,book],
"grade":
{
"English":100,
"Math":150
}
}
[] //array
Python容器
List
-
基于可变长 连续 指针数组 实现。列表中存储 的并不是对象本身,而是指向对象的指针(引用)
-
特征:
-
有序、可变、允许重复、支持索引和切片
-
按索引随机访问O(1) ,尾部append 均摊时间复杂度O(1)
-
头部/中间插入或删除 (insert/pop(0))需要移动后续的所有的指针,复杂度O(n)
-
成员方法
-
添加/插入 :
append(x)(末尾添加)、extend(iterable)(批量扩展)、insert(i, x)(指定位置插入) -
删除 :
pop([i])(移除并返回指定位置元素,默认末尾)、remove(x)(移除首个匹配项)、clear()(清空列表) -
查找/计数 :
index(x)(返回首个匹配索引)、count(x)(统计出现次数) -
排序/翻转 :
sort(key=None, reverse=False)(原址排序)、reverse()(原址反转)、copy()(浅拷贝)
使用场景
需要存储同类数据系列 ,且频繁发生修改、动态增删或所需要维持插入顺序的场景(待办事项列表、批量处理的数据集)
Tuple
-
核心特征:有序、不可变、允许重复元素
-
成员方法
-
计数:count(x)---->统计元素的个数
-
查询:index(x)------>获取元素首先出现的索引
-
-
使用场景
-
数据安全与结构化:作为函数的多个返回值 、存储配置信息 等不可变数据
-
字典键或集合元素 :因器不可变且可哈希,作为dict的键或set的元素
-
Dictionary
核心特征 :键值对(Key-Value)映射,键唯一且必须可哈希 ,值可重复且类型不限。Python 3.7+ 后保持插入顺序。
常用成员方法:
-
获取/查找 :
get(key, default)(安全获取,不存在时不报错)、keys()(获取所有键)、values()(获取所有值)、items()(获取所有键值对 tuples) -
更新/合并 :
update(other_dict)(批量更新/合并字典)、setdefault(key, default)(若键不存在则设置默认值并返回) -
删除 :
pop(key, default)(移除并返回指定键的值)、popitem()(移除并返回最后一个键值对)、clear()(清空) -
拷贝 :
copy()(浅拷贝)
使用场景:
-
需要通过唯一标识快速查找数据(基于哈希表,查找效率 O(1))。
-
表示结构化对象(如 JSON 映射、用户信息实体、配置参数等)。
Set
核心特征 :无序、元素唯一 、不可变元素(必须可哈希)。另有不可变集合 frozenset。
常用成员方法:
-
添加/删除 :
add(x)(添加)、remove(x)(删除,不存在则抛错误)、discard(x)(安全删除,不存在不报错)、pop()(随机移除并返回)、clear() -
集合运算(原址更新) :
update()(并集)、intersection_update()(交集)、difference_update()(差集)、symmetric_difference_update()(对称差集) -
逻辑判断 :
isdisjoint()(无重合)、issubset()(子集)、issuperset()(超集)
使用场景:
-
快速去重:清除列表等容器中的重复项。
-
关系测试:求并集、交集、差集(如:统计共同好友、差异用户列表)。