
1 Zhuzhuchenyan 2021-11-04 17:36:13 +08:00 开箱即用的方法应该是不存在的。 要想避免 O(n)的查询复杂度的话,万变不离其宗的方法就是加索引,比较简单的就是加个对于 status 的倒排索引 倒排索引的 key 就是 status 的值,如下例子 [1] => {user1, user2, ...} [2] => {user3, user4, .....} |
2 imn1 2021-11-04 18:10:04 +08:00 1.网上有 nested dict 2 1dim 或者 flatten dict 的代码,我忘了出处了,搜搜吧 转为一维后就容易搜了 2.如果已经知道“路径”,有个包叫 jsonpath ,用类似 xpath 方式搜索 json 3.types 有个类 Simplenamespace ,把 dict[key] 转为 dict.key 形式,不过只能转一层,嵌套就自己写个递归吧 4. json 是字符串,可用正则,这是另类思维 |
3 MoYi123 2021-11-04 19:38:14 +08:00 我有点看不懂你举的例子是怎么样一个数据结构. python3.10 出的模式匹配,应该能用来做这个. |
4 MoYi123 2021-11-04 19:45:38 +08:00 objs = [ ____{"key": "users", "value": {"status": 2}, "name": "openid"}, ____{"key": "users", "value": {"status": 3}, "name": "openid"} ] for obj in objs: ____match obj: ________case {"value": {"status": 2}}: ____________print(obj) |
5 ClericPy 2021-11-04 21:02:43 +08:00 如果猜错了, 那就当我没说 排名有先后 jmespath objectpath jsonpath-rw Jsonpath |
6 dongcidaci 2021-11-05 12:26:31 +08:00 via Android 递归,dfs |
7 shm7 2021-11-21 18:37:01 +08:00 如果格式固定,为什么不试试 named tuple |