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

您可能还喜欢...

发表回复