DotMap 操作字典类型库介绍
munch 也是一个提供DotMap的字典的库的操作。有兴趣可以自行百度,这个其实和DotMap一样的功能!
DotMap 这个库其实也是一个类似munch的处理机制。其实关于字典,我们的知道还有一种定义字典的方式就是:
1 初期认识的字典定义方式
首先字典定义的方式的几种:
第1种:
dict(name='xiaozhong', sex="男")
复制
第二钟:
{"name":'xiaozhong', "sex":"男"}
复制
第三种(列表):
dict([["name", "xiaozhong"], ["sex", "男"]])
复制
第四种(元祖):
dict([("name", "xiaozhong"), ("sex", "男")])
复制
2:利用namedtuple封装为类的方式
第五种(namedtuple封装):
from collections import namedtuple
# 定义namedtuple类型User,并包含name,sex属性。
User = namedtuple('User', ['name', 'sex'])
# 创建一个User对象
user = User(name='xiaozhonhg', sex='男')
print(type(user))
# 通过list来创建一个User对象,需使用"_make"方法
user = User._make(['xiaozhonhg', '男'])
print(type(user))
# 把一个对象转为字典类型
print(user._asdict())
# 访问内容
print(user._asdict()['name'])复制
输出结果为:
<class '__main__.User'>
<class '__main__.User'>
OrderedDict([('name', 'xiaozhonhg'), ('sex', '男')])
xiaozhonhg复制
3:DotMap主角方式
上面的以前我所知道的几种方式,接下来的有新的一个库,它其实可以很用用到我们的JSON的反序列话上,这种对我们的来说是比较有溢出的。也是这里介绍的这个DotMap。
官网的地址:https://github.com/drgrib/dotmap
安装:
pip3 install dotmap
更新
pip3 install --upgrade dotmap复制
3.1 简单的使用
from dotmap import DotMap
m = DotMap()
m.name = 'xiaozhong'
m.sex = '男'
print('类型:',type(m))
print("使用.访问元素",'--->'*3)
print('你好:' + m.name)
print('性别:',m.sex)
print("使用[""]访问元素",'--->'*3)
print('你好:' + m['name'])
print('性别:',m['sex'])
#另一种初始化方式:
m2 = DotMap(name='xiaozhong2222',sex="女")
# 或者 还可以传入已有的字典:
# m2 = DotMap({"name":'xiaozhong', "sex":"男"})
print("使用.访问元素",'--->'*3)
print('你好:' + m2.name)
print('性别:',m2.sex)
print("使用[""]访问元素",'--->'*3)
print('你好:' + m2['name'])
print('性别:',m2['sex'])复制
输出结果:
类型:<class 'dotmap.DotMap'>
使用.访问元素 --->--->--->
你好:xiaozhong
性别:男
使用[]访问元素 --->--->--->
你好:xiaozhong
性别:男
使用.访问元素 --->--->--->
你好:xiaozhong2222
性别:女
使用[]访问元素 --->--->--->
你好:xiaozhong2222
性别:女复制
3.2 对象转字典,格式化输出JSON:
from dotmap import DotMap
m = DotMap()
m.people.john.age = 32
m.people.john.job = 'programmer'
m.people.mary.age = 24
m.people.mary.job = 'designer'
m.people.dave.age = 55
m.people.dave.job = 'manager'
print("---->"*3)
m.xiaoming.job = '111111111111'
m.xiaoming.name = 'xiaozhong'
m.xiaohuang.job = '2222222222'
print('对象转字典:',m.toDict())
print('输出JSON:')
m.pprint()
# m.pprint(pformat='json')复制
输出结果:
---->---->---->
对象转字典: {'people': {'john': {'age': 32, 'job': 'programmer'}, 'mary': {'age': 24, 'job': 'designer'}, 'dave': {'age': 55, 'job': 'manager'}}, 'xiaoming': {'job': '111111111111', 'name': 'xiaozhong'}, 'xiaohuang': {'job': '2222222222'}}
输出JSON:
{'people': {'dave': {'age': 55, 'job': 'manager'},
'john': {'age': 32, 'job': 'programmer'},
'mary': {'age': 24, 'job': 'designer'}},
'xiaohuang': {'job': '2222222222'},
'xiaoming': {'job': '111111111111', 'name': 'xiaozhong'}}复制
4:JSON 反序列化DotMap
请求的接口是:
from dotmap import DotMap
m = DotMap()
import requests
m=DotMap(requests.post('http://127.0.0.1:20219/xxx/xxxxx/editOrAddChatbot').json())
print(m)
print(m.xiaoming.job)
print(m.xiaohuang.job)
print(m.xiaohuang.name)
m.pprint(pformat='json')复制
输出结果为:
DotMap(people=DotMap(dave=DotMap(age=55, job='manager'), john=DotMap(age=32, job='programmer'), mary=DotMap(age=24, job='designer')), xiaohuang=DotMap(job='2222222222'), xiaoming=DotMap(job='111111111111', name='xiaozhong'))
111111111111
2222222222
DotMap()
{
"people": {
"dave": {
"age": 55,
"job": "manager"
},
"john": {
"age": 32,
"job": "programmer"
},
"mary": {
"age": 24,
"job": "designer"
}
},
"xiaohuang": {
"job": "2222222222",
"name": {}
},
"xiaoming": {
"job": "111111111111",
"name": "xiaozhong"
}
}复制
到此结束!水文一篇!仅作为个人的笔记,和备忘记录!
个人其他博客地址
简书:https://www.jianshu.com/u/d6960089b087
掘金:https://juejin.cn/user/2963939079225608
小钟同学 | 文 【原创】| QQ:308711822
1:本文相关描述主要是个人的认知和见解,如有不当之处,还望各位大佬指正。
2:关于文章内容,有部分内容参考自互联网整理,如有链接会声明标注;如没有及时标注备注的链接的,如有侵权请联系,我会立即删除处理哟。
文章转载自小儿来一壶枸杞酒泡茶,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1893次阅读
2025-04-09 15:33:27
2025年3月国产数据库大事记
墨天轮编辑部
872次阅读
2025-04-03 15:21:16
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
605次阅读
2025-04-10 15:35:48
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
497次阅读
2025-04-01 20:42:12
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
488次阅读
2025-04-11 09:38:42
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
466次阅读
2025-04-14 09:40:20
最近我为什么不写评论国产数据库的文章了
白鳝的洞穴
410次阅读
2025-04-07 09:44:54
天津市政府数据库框采结果公布!
通讯员
361次阅读
2025-04-10 12:32:35
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
359次阅读
2025-04-17 17:02:24
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
339次阅读
2025-04-18 10:01:22