python列表中字典按指定相同的键值对合并到一个列表中

类似数据,列表中每一个字典是一条数据,如何按天将数据分割,将每天的数据保存到一个列表中,每天的数据量不相同也就是每天数据的行数不同[{'date':2019-08-17,... 类似数据,列表中每一个字典是一条数据,如何按天将数据分割,将每天的数据保存到一个列表中,每天的数据量不相同也就是每天数据的行数不同
[ {'date':2019-08-17, 'type':'旅游', 'over_im':'12365'},
{'date':2019-08-17, 'type':'娱乐', 'over_im':'11234'},
{'date':2019-08-17, 'type':'工作', 'over_im':'9754'},
{'date':2019-08-17, 'type':'休闲', 'over_im':'8634'},
{'date':2019-08-17, 'type':'生活', 'over_im':'3256'},

{'date':2019-08-18, 'type':'生活', 'over_im':'15342'},
{'date':2019-08-18, 'type':'旅游', 'over_im':'12332'},
{'date':2019-08-18, 'type':'玩乐', 'over_im':'11232'},
{'date':2019-08-18, 'type':'休闲', 'over_im':'10432'},
{'date':2019-08-18, 'type':'生活', 'over_im':'9532'},
{'date':2019-08-18, 'type':'工作', 'over_im':'7632'},
{'date':2019-08-18, 'type':'游戏', 'over_im':'5422'},

{'date':2019-08-19, 'type':'工作', 'over_im':'9942'},
{'date':2019-08-19, 'type':'游戏', 'over_im':'7842'},
{'date':2019-08-19, 'type':'休闲', 'over_im':'6213'},
{'date':2019-08-19, 'type':'生活', 'over_im':'5267'},
{'date':2019-08-19, 'type':'玩乐', 'over_im':'2445'}
...]
]
展开
 我来答
ycl_159401
2019-08-22 · TA获得超过295个赞
知道小有建树答主
回答量:552
采纳率:73%
帮助的人:122万
展开全部
使用集合去重 + local动态变量设置 + exec 字符串解析 可实现,话不多说,代码在下面,格式有问题调整下空格:
list_msg = [{'date':'2019-08-17', 'type':'旅游', 'over_im':'12365'},
{'date':'2019-08-17', 'type':'haha', 'over_im':'12365'},
{'date':'2019-08-18', 'type':'娱乐', 'over_im':'11234'},{'date':'2019-08-19', 'type':'生活', 'over_im':'9532'},]

# 去除字典重复的data ,获取数据包含多少天内容
set_mark = {i['date'] for i in list_msg}
# 去除非法命名字符作为列表后缀:
ver_name = [i.replace('-','_') for i in set_mark]
# 给列表排序,确保按照顺序输出变量
ver_name.sort()
# 设置动态命名模板
list_name_template = 'list_data_'
# 创建local对象,准备创建动态变量
createver = locals()
# 循环遍历数据并创建动态列表变量接收
for mark in set_mark:
# 动态创建变量
createver[list_name_template + mark.replace('-','_')] \
= [dict_current for dict_current in list_msg if dict_current['date'] == mark]
for name in ver_name:
print(list_name_template + name + ':' ,end='\t') # 打印自动创建的变量名称,采用tab分隔
exec('print('+list_name_template + name +')') # 打印变量内容(列表)

'''
打印结果
list_data_2019_08_17: [{'date': '2019-08-17', 'type': '旅游', 'over_im': '12365'}, {'date': '2019-08-17', 'type': 'haha', 'over_im': '12365'}]
list_data_2019_08_18: [{'date': '2019-08-18', 'type': '娱乐', 'over_im': '11234'}]
list_data_2019_08_19: [{'date': '2019-08-19', 'type': '生活', 'over_im': '9532'}]
'''
jjdsjeff
2019-08-21 · TA获得超过2051个赞
知道大有可为答主
回答量:2468
采纳率:72%
帮助的人:597万
展开全部

import pandas as pd

arr=[{'date':'2019-08-17', 'type':'旅游', 'over_im':'12365'},{'date':'2019-08-17', 'type':'娱乐', 'over_im':'11234'},{'date':'2019-08-17', 'type':'工作', 'over_im':'9754'},{'date':'2019-08-17', 'type':'休闲', 'over_im':'8634'},{'date':'2019-08-17', 'type':'生活', 'over_im':'3256'},{'date':'2019-08-18', 'type':'生活', 'over_im':'15342'},{'date':'2019-08-18', 'type':'旅游', 'over_im':'12332'},{'date':'2019-08-18', 'type':'玩乐', 'over_im':'11232'},{'date':'2019-08-18', 'type':'休闲', 'over_im':'10432'},{'date':'2019-08-18', 'type':'生活', 'over_im':'9532'},{'date':'2019-08-18', 'type':'工作', 'over_im':'7632'},{'date':'2019-08-18', 'type':'游戏', 'over_im':'5422'},{'date':'2019-08-19', 'type':'工作', 'over_im':'9942'},{'date':'2019-08-19', 'type':'游戏', 'over_im':'7842'},{'date':'2019-08-19', 'type':'休闲', 'over_im':'6213'},{'date':'2019-08-19', 'type':'生活', 'over_im':'5267'},{'date':'2019-08-19', 'type':'玩乐', 'over_im':'2445'}]

df=pd.DataFrame(arr)

print(df.set_index(['date','type']))

请点击输入图片描述

pandas能很方便的处理

追问
大神好:使用pandas处理后的数据该怎么取值呢?
追答
什么叫怎么取值?另存为Excel文件?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蟹岳品P
2019-08-21 · TA获得超过560个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:96.8万
展开全部
先说函数:dict(zip(列表1,列表2))

列表1作为key,列表2作为value

下面看一下代码:

#定义两个列表
list1 = range(0,10)
list2 = range(10,20)

#合并为字典,调用dict(zip())
dict_name = dict(zip(list1,list2))

print(dict_name)

运行结果:

{0: 10, 1: 11, 2: 12, 3: 13, 4: 14, 5: 15, 6: 16, 7: 17, 8: 18, 9: 19}
追问
感觉不能满足需求,如何能按照date的value来进行分割,将date相同的字典添加到一个新列表中
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hy1397471
2019-08-21 · 知道合伙人软件行家
hy1397471
知道合伙人软件行家
采纳数:4714 获赞数:17152
15年数据库维护及数据库应用系统开发经验,从事零售业、服务业及财务管理类系统开发与维护。

向TA提问 私信TA
展开全部
如果对效率有要求,数据转成DataFrame来处理。对效率没有要求,直接循环也行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-08-23
展开全部
for循环遍历一个一个取没什么好说的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式