- 2023-01-03
- 可自定义键名的分割符,默认为【.】
- 2023-02-15
- 不使用递归,改成遍历keys判断
- 2023-03-14
- 支持字典里面嵌套列表,列表里嵌套字典
前些时间写了个php获取数组的。
刚好现在python的项目也需要同样的功能,就也写了一个,算法都一样,就不多说别的了,直接上代码。
# coding=UTF-8 def getval(data, key, default=None, separator='.'): keys = key.split(separator) for k in keys: if isinstance(data, dict) and k in data: data = data[k] elif isinstance(data, list) and k.isdigit() and len(data) > int(k): data = data[int(k)] else: return default return data
调用方法跟php版的一样
data = {
'site': {
'name': '虚拟笔记',
'domain': 'www.notevm.com',
'page': {
'tags': {
'python': 'https://www.notevm.com/a/special/python'
}
}
}
}
name = getval(data, 'site.name')
print('获取二维字典:%s' % name)
python = getval(data, 'site.page.tags.python')
print('获取四维字典:%s' % python)
url = getval(data, 'site.url', 'https://www.notevm.com/')
print('元素不存在返回默认值:%s' % url)

自定义分割符
如果数组的某个键名中包含【.】的话,可以自定义传入键名的分割符
data = {
'site': {
'name': '虚拟笔记',
'domain': 'www.notevm.com',
'page': {
'tags.python': 'https://www.notevm.com/a/special/python'
}
}
}
python = getval(dictdata=data, key='site|page|tags.python', separator='|')
print(python)
原创文章,作者:小哆啦,如若转载,请注明出处:https://www.notevm.com/a/6083.html