博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python递归查找dict/list
阅读量:5886 次
发布时间:2019-06-19

本文共 836 字,大约阅读时间需要 2 分钟。

hot3.png

递归遍历,返回路径和查找到的值

from collections import Mappingdef recursive_findall(obj, key, paths=None):    ret = []    if not paths:        paths = []    if isinstance(obj, Mapping):        for k, v in obj.iteritems():            found_items = recursive_findall(v, key, paths=(paths + [('k', k)]))            ret += found_items    elif isinstance(obj, (list, tuple)):        for i, v in enumerate(obj):            found_items = recursive_findall(v, key, paths=(paths + [('i', i)]))            ret += found_items    else:        if key(obj):            ret.append((paths, obj))    return retprint recursive_findall(['a', 'bcd', {'bx': '33', 'cx': {'b': '34'}}], key=lambda v: '3' in v)# [([('i', 2), ('k', 'cx'), ('k', 'b')], '34'), ([('i', 2), ('k', 'bx')], '33')]# 'i'表示是list的index, 'k'表示是dict的key

转载于:https://my.oschina.net/1123581321/blog/852045

你可能感兴趣的文章
提高mysql查询效率的六种方法
查看>>
Jsp Session
查看>>
mysql替换某个字段中的某个字符
查看>>
关于写blog这件事
查看>>
Linux中的其他命令
查看>>
轻松简单搭建Linux下的C#开发环境<转>
查看>>
一个类型初始值设定项引发异常
查看>>
将现有MySQL数据库改为大小写不敏感
查看>>
设计模式之美:Extension Object(扩展对象)
查看>>
linux中/etc/passwd文件与/etc/shadow文件解析
查看>>
外观模式之C++实现
查看>>
对于大流量的网站,您采用什么样的方法来解决访问量问题?
查看>>
Winform调用百度地图接口
查看>>
2.2. DHCP
查看>>
Pycharm 快捷键
查看>>
thickbox问题
查看>>
【position也可以很复杂】当弹出层遇上了鼠标定位(上)
查看>>
一个机票航班查询的代码
查看>>
xen-4.1.2+Linux-3.1.2源码编译安装
查看>>
15.6. HTML嵌入图片
查看>>