python字符串转字典并获取多层嵌套字典元素

本文介绍了如何通过json.loads将给定的字符串str_obj转换为字典,进而提取其中嵌套的MxpiObject中的x0值。通过一步步操作,展示了在复杂数据结构中查找特定键值的过程。

        首先定义一个符合json格式字符串,即字符串首尾由{}符号包裹,内部为key:value键值对组合。如果是嵌套字典,在value内部继续使用{}符号包裹,一个三层嵌套字典的形式:{key:[{key:[{key:[],...}]},{key:[]}],...}。如下:一个key对应一个列表形式的value。

str_obj = '{"MxpiObject":[{"classVec":[{"classId":16,"className":"dog","confidence":0.93969720599999995,"headerVec":[]}],"x0":8.4936981199999995,"x1":370.58398399999999,"y0":153.65756200000001,"y1":574.28491199999996},{"classVec":[{"classId":16,"className":"dog","confidence":0.93356323200000002,"headerVec":[]}],"x0":334.45755000000003,"x1":738.55914299999995,"y0":149.46833799999999,"y1":544.36035200000003},{"classVec":[{"classId":16,"className":"dog","confidence":0.92845106099999997,"headerVec":[]}],"x0":688.83727999999996,"x1":1079.77136,"y0":234.55336,"y1":521.01190199999996}]}'

        如果要提取这个字符串内部某个key对应的value,第一步是将字符串转换为字典,使用json.loads(str_obj)。

str_dic = json.loads(str_obj)

如果要获取某一层元素,使用str_dic[key][index][key]。获取“x0"元素对应value。

x0 = str_dic["MxpiObject"][0]["x0"]

print(x0)

"8.49369812"

Python中的字典可以进行多层嵌套,用来存储更为复杂的数据结构。可以通过嵌套的键来访问内层的值,以此来实现复杂数据的存储和查询。下面是一个示例: ```python person = { 'name': 'John', 'age': 30, 'address': { 'street': '123 Main St', 'city': 'Anytown', 'state': 'CA', 'zip': '12345' }, 'phone_numbers': [ { 'type': 'home', 'number': '555-1234' }, { 'type': 'work', 'number': '555-5678' } ] } # 查询嵌套的值 print(person['name']) # 'John' print(person['address']['city']) # 'Anytown' print(person['phone_numbers'][0]['number']) # '555-1234' # 修改嵌套的值 person['address']['street'] = '456 Main St' person['phone_numbers'][1]['number'] = '555-4321' # 添加新的嵌套键值对 person['email'] = 'john@example.com' person['phone_numbers'].append({'type': 'mobile', 'number': '555-9999'}) ``` 以上代码中,我们创建了一个名为`person`的字典,其中包含多层嵌套的键值对。我们可以通过`person[key]`的方式访问嵌套的值,其中`key`可以是一个字符串或者一个整数。如果需要修改嵌套的值,只需要使用相同的方式进行赋值即可。如果需要添加新的嵌套键值对,可以使用`person[key] = value`的方式进行添加。 需要注意的是,如果查询一个不存在的键,会抛出`KeyError`异常。为了避免这种情况,可以使用`get()`方法,如果键不存在,返回默认值(默认为`None`): ```python print(person.get('name')) # 'John' print(person.get('birthdate')) # None print(person.get('birthdate', 'unknown')) # 'unknown' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TheMatrixs

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值