数据重组:对一堆相似字典进行分类统计(shidebin)
数据重组
# 需求说明:将data_source分类统计,并输出为如下data_final的形式:
# data_final ===》
# {
# 'area': [{'place': '南山区', 'amount': 3}, {'place': '宝安区', 'amount': 3}],
# 'type': {'other': 3, 'govenment': 1, 'education': 1, 'business': 1}
# } def class_sum(data_source_list, class_key_name, sum_key_name):
'''对一堆相似字典进行分类统计 :param data_source_list: 原始数据,列表中放字典。如:[{"c":"c1","count":2},{"c":"c2","count":1},{"c":"c1","count":1}]
:param class_key_name: 分类的key名称。如"c"
:param sum_key_name: 统计计数的key名称。如"count"
:return:分类清单 和 对应的统计计数。如:list_class=["c1", "c2"] 和 list_sum=[3, 1]
'''
list_class = []
list_sum = []
for dict_tmp in data_source_list:
sum_tmp = 0
# print(dict_tmp)
if class_key_name in dict_tmp:
if dict_tmp[class_key_name] not in list_class:
list_class.append(dict_tmp[class_key_name])
sum_tmp += dict_tmp[sum_key_name]
list_sum.append(sum_tmp)
else:
sum_index = list_class.index(dict_tmp[class_key_name])
sum_tmp = list_sum[sum_index]+dict_tmp[sum_key_name]
list_sum[sum_index] = sum_tmp
return (list_class, list_sum) data_source = [
{
"town_name": "南山区",
"type": "other",
"count": 1
},
{
"town_name": "南山区",
"type": "govenment",
"count": 1
},
{
"town_name": "南山区",
"type": "education",
"count": 1
},
{
"town_name": "宝安区",
"type": "other",
"count": 2
},
{
"town_name": "宝安区",
"type": "business",
"count": 1
}
] for dict_tmp in data_source:
print(dict_tmp) data_final = {}
data_final['area'] = []
data_final['type'] = {} # 1.1、按照town_name分类和统计count
list_class, list_sum = class_sum(data_source, "town_name", 'count') print(1111111111111)
print(list_class)
print(list_sum) # 2.1 组装area:根据town_name分类和统计
data_final["area"] = list(map(lambda x, y: {"place": x, "amount": y}, list_class, list_sum)) # 1.2、按照type分类和统计count
list_class, list_sum = class_sum(data_source, "type", 'count') print(2222222222222)
print(list_class)
print(list_sum) # 2.2 组装type:根据type分类和统计
for c in list_class:
data_final["type"][c] = list_sum[list_class.index(c)]
print(data_final) # 想要的 {'area': [{'amount': 3, 'place': '南山区'}, {'amount': 3, 'place': '宝安区'}], 'type':{'other': 3, 'govenment': 1, 'education': 1, 'business': 1}}
输出:

数据重组:对一堆相似字典进行分类统计(shidebin)的更多相关文章
- 【DG】Oracle_Data_Guard官方直译
[DG]Oracle Data Guard官方直译 1 Oracle Data Guard 介绍 Oracle Data Guard概念和管理10g版本2 Oracle Data Guard ...
- DVWA实验之Brute Force(暴力破解)- Low
DVWA实验之Brute Force-暴力破解- Low 这里开始DVWA的相关实验~ 有关DVWA环境搭建的教程请参考: https://www.cnblogs.com/0yst3r-2 ...
- Oracle错误览表
Oracle 错误总结及问题解决 ORA 本文转自:https://www.cnblogs.com/zhangwei595806165/p/4972016.html 作者@承影剑 ORA-0 ...
- Dictionary Learning(字典学习、稀疏表示以及其他)
第一部分 字典学习以及稀疏表示的概要 字典学习(Dictionary Learning)和稀疏表示(Sparse Representation)在学术界的正式称谓应该是稀疏字典学习(Sparse Di ...
- Hihicoder 题目1 : Trie树(字典树,经典题)
题目1 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编 ...
- UVA - 11488 字典树
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- POJ 2418 字典树
题目链接:http://poj.org/problem?id=2418 题意:给定一堆树的名字,现在问你每一棵树[无重复]的出现的百分比,并按树名的字典序输出 思路:最简单的就是用map来写,关于字典 ...
- hdu1251 字典树or map
一道字典树的题,不过看起来用map更为简单 传送门 题意: 给出一堆字符串构成一个字典,求字典里以某字符串为前缀的字符串有几个 思路: 输入字符串时把字符串的前缀全部存进map并标记次数 查询时直接输 ...
- HDU 4825 Xor Sum(经典01字典树+贪心)
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others) Total ...
随机推荐
- laravel中artisan的用法
如:
- Android DiskLruCache完全解析,硬盘缓存的最佳方案(转)
概述 记得在很早之前,我有写过一篇文章<Android高效加载大图.多图解决方案,有效避免程序OOM>,这篇文章是翻译自Android Doc的,其中防止多图OOM的核心解决思路就是使用L ...
- 仿迅雷播放器教程 -- 基于VLC的C++播放器 (4)
经过前面的介绍,想必大家对VLC和ffmpeg都有一定印象了,还记得学习ffmpeg多么蛋疼吗?那么VLC会不会也这么蛋疼呢? 那么我们来看一段官方的Demo,Alberl精简了Demo,只留 ...
- Windowsclient SSH 远程连接Windowsserver(PowerShell Server)
近期刚搞完SSH框架.又来研究研究SSH远程连接.为什么这么要弄这个呢?由于如今我如今开发主要在自己的笔记本(windows)上,然后写的后端都要部署到实验室的台式机(windows)上,这样一来,我 ...
- 大杂烩 -- equals、hashCode联系与区别
基础大杂烩 -- 目录 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Equals 1.默认情况(没有覆盖equals方 ...
- nodejs即时通讯模块+SocketIO4Net的使用小结
实现思路:客户端js连接了nodejs服务,通过.net连接nodejs服务,通过.net发送消息到nodejs,然后通过nodejs将消息推送给(用户)客户端 1.先下载nodejs安装,至于怎么安 ...
- 二叉树的基础题目学习(EPI)
1.判断是个二叉树是不是平衡二叉树. 二叉树的定义都是利用递归的方法,所以二叉树有着天然的递归属性.所以一般情况下,递归解决二叉树问题中,递归解法比较简洁.平衡二叉树的定义是左子树和右子树均是平衡二叉 ...
- oracle 创建表同时添加注释
创建数据库表.添加注释的方法: create table WARNINGRECORD ( RecordID ) primary key not null ); comment on column WA ...
- Phoenix系列:二级索引(2)
上一篇介绍了Phoenix基于HBase的二级索引的基本知识,这一篇介绍一下和索引相关的一致性和优化相关内容. 一致性的保证 Phoenix客户端在成功提交一个操作并且得到成功响应后,就代表你所做的操 ...
- javaWeb的基础知识
在服务器中,端口号是比较重要的,要学会查看和修改.win7有cmd和任务管理器两种方法.同时区分include动作和指令. <%@ include file="url"> ...