python字典读取不报错, 用 get(),s.get(“age”,””) ,自定义类的方式,每次把字典先格式化一下,无对应值返回None ,在 Python 的collections工具模块中,有一个defaultdict实现了类似的事情。我们看它的使用方法
python字典读取不报错, 用 get(),s.get(“age”,””) ,自定义类的方式,每次把字典先格式化一下,无对应值返回None ,在 Python 的collections工具模块中,有一个defaultdict实现了类似的事情。我们看它的使用方法
一说起字典中获取数据,我去这多简单
小案例上来:
方法一
from jsonpath import jsonpath
ss = {“a”:1,”b”:2}
result = jsonpath(ss,”$..a”)[0]
print(result)
方法二
from glom import glom
result = glom(ss,’a’)
print(result)
方法三
result = ss.get(“a”)
方法四
result = ss[‘a’]
多简单,再来一个案例,我们遇到的实际情况,可不是这么简单:
ss = {
“data”:[
{“name”:”a1″,”age”:18},
{“name”:”a2″,”age”:15},
{“name”:”a3″},
]
}
我们要获取name和对应age
for s in ss[“data”]:
#这么写
name = s[“name”]
age = s[“age”]
#还是这么写
name = jsonpath(s,”$..name”)[0]
age = jsonpath(s,”$..age”)[0]
# 这么写给
name = glom(s,’name’)
age = glom(s,'age')
都会报错:
我们只能用 get()
name = s.get(“name”,””)
age = s.get(“age”,””)
每次这么写感觉会很麻烦,后来发现可以自定义类的方式,每次把字典先格式化一下,无对应值返回None
我们自定义一个类,继承dict,然后实现它的missing方法:
class OurDict(dict):
def missing(self, key):
return None
a = OurDict({‘a’: 1, ‘b’: 2})
print(a[‘x’])
在在后来,在 Python 的collections工具模块中,有一个defaultdict实现了类似的事情。我们看它的使用方法
from collections import defaultdict
a = defaultdict(str)
a[‘a’] = 1
a[‘b’] = 2
print(a)
print(a[‘x’])
print(a)
a = defaultdict(str)接收一个函数,让a变量成为一个defaultdict类型的对象,它可以像普通字典一样被赋值和读取。
但是当你读取一个不存在的 key 时,它会自动生成一个默认值,并把默认值和这个 key 插入到字典中。这个默认值取决于你在defaultdict传入的参数。如果传入的是str那么默认值就是空字符串,如果是int那么默认值就是0.当然你也可以传入自定义的一个函数,从而控制这个默认值。
————————————————
版权声明:本文为CSDN博主「公众号菜鸟童靴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/BigBoy_Coder/article/details/103408099