- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
郑州Python培训班教你数据统计,分组的一些小技
郑州Python培训班教你数据统计,分组的一些小技巧在字典中将键映射到多个值上面
{'b':?[4,?5,?6],
'a':?[1,?2,?3]}有时候我们在统计相同key值的时候,希望把所有相同key的条目添加到以key为键的一个字典中,然后再进行各种操作,这时候我们就可以使用下面的代码进行操作:from collections import?defaultdict
d?=?defaultdict(list)
print(d)
d['a'].append(1)
d['a'].append(2)
d['a'].append(3)
d['b'].append(4)
d['b'].append(5)
d['b'].append(6)
print(d)
print(d.get("a"))
print(d.keys())
print([d.get(i)?for?i?in?d])
这里是使用了collections中的方法,这里面还拥有很多有用的方法,我们有时间在继续进行深入了解。
上面代码运行结果:defaultdict(,?{})
defaultdict(,?{'b':?[4,?5,?6],?'a':?[1,?2,?3]})
[1,?2,?3]
dict_keys(['b',?'a'])
[[4,?5,?6],?[1,?2,?3]]
我们将数据填入之后,相当于进行快速分组,然后遍历每个组就可以统计一些我们需要的数据。迅速转换字典键值对
data?=?{...}zip(data.values(),?data.keys())
data是我们的格式数据,使用zip后进行快速键值转换,然后可以使用max,min之类函数进行数据操作。通过公共键对字典进行排序
from operator import itemgetterdata?=?[
????{'name':?"bran",?"uid":?101},
????{'name':?"xisi",?"uid":?102},
????{'name':?"land",?"uid":?103}
]
print(sorted(data,?key=itemgetter("name")))
print(sorted(data,?key=itemgetter("uid")))
数据格式就是data,我们想要对name或者uid进行排序我们就是用代码中的方法。运行结果:[{'name':?'bran',?'uid':?101},?{'name':?'land',?'uid':?103},?{'name':?'xisi',?'uid':?102}]
[{'name':?'bran',?'uid':?101},?{'name':?'xisi',?'uid':?102},?{'name':?'land',?'uid':?103}]
正如我们期望中的一样对列表中的多个字典根据某一字段进行分组
注意注意,在进行分组前要首先对数据进行排序处理,排序字段根据实际要求来选择。即将处理的数据:rows?=?[
????{'name':?"bran",?"uid":?101,?"class":?13},
????{'name':?"xisi",?"uid":?101,?"class":?11},
????{'name':?"land",?"uid":?103,?"class":?10}
]
期望处理结果:{
101:?[{'name':?'xisi',?'class':?11,?'uid':?101},{'name':?'bran',?'class':?13,?'uid':?101}],
103:?[{'name':?'land',?'class':?10,?'uid':?103}]
}
我们按照uid进行分组,这里只是演示,uid一般也不会重复。这个比较复杂一点,我们一部一步来分解。some?=?[('a',?[1,?2,?3]),?('b',?[4,?5,?6])]
print(dict(some))
结果:{'b': [4, 5, 6], 'a': [1, 2, 3]}
这里我们的目的是将元组转换成字典,这个很简单,应该都能看懂。接着我们来下一步对待处理数据进行排序:data_one?=?sorted(rows,?key=itemgetter("class"))
print(data_one)
data_two?=?sorted(rows,?key=lambda?x:?(x["uid"],?x["class"]))
print(data_two)
这里我们提供两种排序方式原理相同,只是样式稍有区别,第一种data_one是直接使用itemgetter,按照我们前面使用过得,直接按照某一字段进行排
1亿VIP精品文档
相关文档
最近下载
- 初中信息技术学业水平考试卓凡系统选择题(161-200题).pptx VIP
- 物理化学(第六版)课后习题答案详解.pdf
- 《中国共产党纪律处分条例》PPT加强党的纪律建设课件.pptx VIP
- 工程造价毕业答辩常见问题(含答案).pdf
- 国家开放大学电大农业推广终结性考试调查报告答案.doc
- 《中国共产党纪律处分条例》解读PPT全面加强党的纪律建设课件.pptx VIP
- 电子商务网站的设计与实现.docx
- 初中信息技术学业水平考试卓凡系统选择题(360-400题).pptx VIP
- 双减作业:北师大版小学数学 四年级上册练习设计(第10-13周).pdf VIP
- 排卵障碍性不孕症中西医结合诊疗指南 (1).pdf
文档评论(0)