python中字典数据的特点_Python字典(Dictionary) 在数据分析中的操作
今天来聊聊python中的字典在数据分析中的应用,为了贴近实战关于简单结构的字典就略过。
今天要聊的字典结构是如下这类复杂结构:
{
"id": "2406124091",
"type": "node",
"visible":"true",
"created": {
"version":"2",
"changeset":"17206049",
"timestamp":"2013-08-03T16:43:42Z",
"user":"linuxUser16",
"uid":"1219059"
},
"pos": [41.9757030, -87.6921867],
"address": {
"housenumber": "5157",
"postcode": "60625",
"street": "North Lincoln Ave"
},
"amenity": "restaurant",
"cuisine": "mexican",
"name": "La Cabana De Don Luis",
"phone": "1 (773)-271-5176"
}
这类数据结构是为了方便写成JSON,或者存入MongoDB使用而存在的。为了便于理解和掌握这种复杂字典的操作方式,我们采取几个有趣的实验,来感受一下:
一、复杂结构字典是否可以拆分成简单结构的字典
如果把这个复杂结构拆分成几个结构简单的小字典或者列表,那么处理起来就会简单许多:
##第一个小字典
{"id": "2406124091",
"type": "node",
"visible":"true"}
##第二个小字典
{"version":"2",
"changeset":"17206049",
"timestamp":"2013-08-03T16:43:42Z",
"user":"linuxUser16",
"uid":"1219059"}
##一个小列表
[41.9757030, -87.6921867]
##第三个小字典
{"housenumber": "5157",
"postcode": "60625",
"street": "North Lincoln Ave"}
##第四个小字典
{"amenity": "restaurant",
"cuisine": "mexican",
"name": "La Cabana De Don Luis",
"phone": "1 (773)-271-5176"}
接下来,我们看看用哪种方法可以进行合并:
d1 = {"id": "2406124091",
"type": "node",
"visible":"true"}
d2 = {"version":"2",
"changeset":"17206049",
"timestamp":"2013-08-03T16:43:42Z",
"user":"linuxUser16",
"uid":"1219059"}
l1 = [41.9757030, -87.6921867]
d3 = {"housenumber": "5157",
"postcode": "60625",
"street": "North Lincoln Ave"}
d4 = {"amenity": "restaurant",
"cuisine": "mexican",
"name": "La Cabana De Don Luis",
"phone": "1 (773)-271-5176"}
d = {d1,d2,l1,d3,d4}
#Traceback (most recent call last):
#
# File "", line 1, in
# d = {d1,d2,l1,d3,d4}
#
#TypeError: unhashable type: 'dict'
###简单粗暴的合并,可惜这样的合并是不可行的
###尝试加上标签后进行合并
d = d1
d['created'] = d2
d['pos'] = l1
d['address'] = d3
d = dict(d,**d4)
pprint.pprint(d)
#{'address': {'housenumber': '5157',
# 'postcode': '60625',
# 'street': 'North Lincoln Ave'},
# 'amenity': 'restaurant',
# 'created': {'changeset': '17206049',
# 'timestamp': '2013-08-03T16:43:42Z',
# 'uid': '1219059',
# 'user': 'linuxUser16',
# 'version': '2'},
# 'cuisine': 'mexican',
# 'id': '2406124091',
# 'name': 'La Cabana De Don Luis',
# 'phone': '1 (773)-271-5176',
# 'pos': [41.975703, -87.6921867],
# 'type': 'node',
# 'visible': 'true'}
###成功完成复杂字典的合并,但是有个问题,顺序不对。在一些特定应用场景中,字典中的数据结构
###是被严格要求的。那么需要继续进行带有顺序要求的控制。
d = {'created':d2,'pos':l1,'address':d3}
pprint.pprint(d)
#{'address': {'housenumber': '5157',
# 'postcode': '60625',
# 'street': 'North Lincoln Ave'},
# 'created': {'changeset': '17206049',
# 'timestamp': '2013-08-03T16:43:42Z',
# 'uid': '1219059',
# 'user': 'linuxUser16',
# 'version': '2'},
# 'pos': [41.975703, -87.6921867]}
#
###成功完成了按顺序的合并,但是d1和d4的字典却无法进行可控的合并,采用dict()函数合并后,
###元素会添加在最后,这就又回到最初的情况
二、由上一个实验可知,两个字典直接合并可行,但结构顺序无法控制,需要对一些结构进行再分解。
d1 = {"id": "2406124091"}
d2 = {"type": "node"}
d3 = {"visible":"true"}
d4 = {"version":"2",
"changeset":"17206049",
"timestamp":"2013-08-03T16:43:42Z",
"user":"linuxUser16",
"uid":"1219059"}
l1 = [41.9757030, -87.6921867]
d5 = {"housenumber": "5157",
"postcode": "60625",
"street": "North Lincoln Ave"}
d6 = {"amenity": "restaurant"}
d7 = {"cuisine": "mexican"}
d8 ={"name": "La Cabana De Don Luis"}
d9 = {"phone": "1 (773)-271-5176"}
拆分完之后是这个样子:
d = {'id':d1,'type':d2,'visible':d3,'created':d4,'pos':l1,'address':d5,
'amenity':d6,'cuisine':d7,'name':d8,'phone':d9}
import pprint
pprint.pprint(d)
#{'address': {'housenumber': '5157',
# 'postcode': '60625',
# 'street': 'North Lincoln Ave'},
# 'amenity': {'amenity': 'restaurant'},
# 'created': {'changeset': '17206049',
# 'timestamp': '2013-08-03T16:43:42Z',
# 'uid': '1219059',
# 'user': 'linuxUser16',
# 'version': '2'},
# 'cuisine': {'cuisine': 'mexican'},
# 'id': {'id': '2406124091'},
# 'name': {'name': 'La Cabana De Don Luis'},
# 'phone': {'phone': '1 (773)-271-5176'},
# 'pos': [41.975703, -87.6921867],
# 'type': {'type': 'node'},
# 'visible': {'visible': 'true'}}
###没有出现我们想要的结果,除了结构是混乱的之外,重新构建的字典中,数据结构也出现的明显的
###错误。尝试另外一种构建方式:
d = {d1,d2,d3,'created':d4,'pos':l1,'address':d5,d6,d7,d8,d9}
d = {d1,d2,d3,d4,l1,d5,d6,d7,d8,d9}
#Traceback (most recent call last):
#
# File "", line 1, in
# d = {d1,d2,d3,d4,l1,d5,d6,d7,d8,d9}
#
#TypeError: unhashable type: 'dict'
d = {d1,d2,d3,d4,'pos':l1,d5,d6,d7,d8,d9}
# File "", line 1
# d = {d1,d2,d3,d4,'pos':l1,d5,d6,d7,d8,d9}
# ^
#SyntaxError: invalid syntax
#
###这种构建方式,过于异想天开了,语法是错误的。
###dict()函数合并的方式我不打算尝试了,应为其中的l1是list,这个是无法用这个函数合并的。
三、直接固定字典的格式,然后对其填充数值或者内容
d = {
"id": "",
"type": "",
"visible":"",
"created": {
"version":"",
"changeset":"",
"timestamp":"",
"user":"",
"uid":""
},
"pos": [0,0],
"address": {
"housenumber": "",
"postcode": "",
"street": ""
},
"amenity": "",
"cuisine": "",
"name": "",
"phone": ""
}
d['id']='2406124091'
d['address']['housenumber']='123456'
pprint.pprint(d['id'])
#'2406124091'
pprint.pprint(d['address'])
#{'housenumber': '123456', 'postcode': '', 'street': ''}
###成功完成写入操作,这种方式需要配合循环和条件判断语句使用。好处是,让数据结构得以固定。
最后,编程这事,没有唯一答案,条条道路通罗马。找到自己最喜欢最顺手的方式是最好的。
其实还有一种方法是使用eval()函数,但介于广大高手们痛恨和鄙视使用该函数,所以这里就不在对这个函数的用法进行探讨。
python中字典数据的特点_Python字典(Dictionary) 在数据分析中的操作相关推荐
- python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。...
[单选题]李明在他所属的公司工作五年,每天都很认真地处理繁杂的事情,同事们都夸他认真,但是依然没有建树,这是因为: [多选题]品牌标志的作用表现在 [单选题]新产品开发的第一个阶段是_______. ...
- python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。(4.0分)_学小易找答案...
[单选题]文本文件存储的是(),由若干文本行组成,通常每行以换行符 '\n' 结尾.(4.0分) [单选题]()属性是返回被打开文件的访问模式.(4.0分) [单选题]重力坝是由砼或( )修筑而成的大 ...
- Python办公自动化实践1:从多个excel表中提取数据并汇总到一个工作表页中,表格,抽取,sheet
Python办公自动化实践1:从多个excel表中提取数据并汇总到一个工作表页中,表格,抽取,sheet 发表时间:2020-04-26 问题:从当前目录或子目录中查询符合条件的excel表格,并从这 ...
- 程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据。...
程序通过定义学生结构体变量,存储学生的学号.姓名和3门课的成绩.函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据.例如,若b所指变量t中的学号.姓名和三门课的成 ...
- matlab将数据输出到excel中,matlab数据输出为excel表格-如何把matlab中的数据导到excel表格中...
如何将matlab工作空间的数据导出到excel 1.很简单的用xlswrite函数就可以了.首先打开matlab,输入你的代码 2.找到你要存放文件的位置复制绝对路径(致谢文件名的话就会存放在当前目 ...
- 实例讲解用.NET技术将Excel表格中的数据导入到特定的SQL Server数据库中
由于管理需要,公司决定上一套信息管理系统,将原来的用Excel所做的记录用管理系统来管理.通过努力,我终于作了一套类似<牛腩新闻发布系统>的客户信息管理系统.可原来的Excel中的数据该如 ...
- python字典怎么添加值_python字典中如何添加键值对
添加键值对 首先定义一个空字典 1 >>> dic={} 直接对字典中不存在的key进行赋值来添加 1 2 3 >>> dic['name']='zhangsan' ...
- python定义一个字典并遍历字典中的键和值_python字典操作总结
创建 方法一: 方法二:从Python 2.2 版本起,可以使用一个工厂方法,传入一个元素是列表的元组作为参数 方法三: 从Python 2.3 版本起, 可以用一个很方便的内建方法fromkeys( ...
- python字典如何删除数据库_Python 字典删除元素clear、pop、popitem
同其它python内建数据类型一样,字典dict也是有一些实用的操作方法.这里我们要说的是字典删除方法:clear().pop()和popitem(),这三种方法的作用不同,操作方法及返回值都不相同. ...
最新文章
- 趋势科技、亚马逊AWS作后盾,天云趋势首款SaaS安全服务强势来袭
- [原][osg][gdal]两种方式修改tiff高程
- 【模型开发】逐步回归
- 分类图 Class Diagram
- python解释器可以使用什么命令_python解释器用什么写的
- 国内用户ios android比例,国内iOS、Android系统的设备总量已达到了2亿
- Codeforces Round #506 (Div. 3) - C. Maximal Intersection (思维,模拟)
- 多个openstack合并成一个openstack的多个region
- MoinMoin Wiki 1.7优化与维护经验
- JQuery Datatables辅助函数
- 吴恩达《深度学习》 学习笔记1
- Python模块-decimal
- c语言程序设计自考真题,自学考试《C语言程序设计》随堂试题及答案
- 我为NET狂~群福利:逆天书库
- python输出内容到终端的函数_如何通过Python函数运行的可执行文件的终端输出以一般方式静音?...
- iOS包重签名工具,ipa文件重签名,快速签名,SignTool签名工具,好用的签名工具,App重签名
- texlive的安装
- 网易mysql微专业_网易MySQL数据库工程师微专业学习笔记(一)
- [转载] 晓说——第26期:艺术北纬三十度 回忆印度(上)
- 后台管理页面左侧导航栏
热门文章
- html图片菱形,CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
- 大学html5毕业设计任务书,2021届本科生毕业设计(论文)工作的通知
- html插入swf自动播放,[转载]网页中插入FLASH(swf文件)的html代码
- 法律人如何使用python_执业10年,我见过太多法律人掉进这个大坑!
- C语言-结构体函数(录入书本的信息)
- TaskSnapshot保存应用画面截图快照的处理过程
- GDOI2017游记
- 李含光《C语言程序设计教程》答案第一——四章
- 移动端微信、QQ浏览器 web 用 rem 单位适配不生效问题
- 记一次暴力破解tomcat后台密码(附带python脚本)