ITPub博客

首页 > 数据库 > 数据库开发技术 > 盘点一个Python字典处理的基础题目--方法多多

盘点一个Python字典处理的基础题目--方法多多

原创 数据库开发技术 作者:Python进阶者 时间:2022-08-28 10:00:00 0 删除 编辑
点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

今

日

鸡

汤

日夕凉风至,闻蝉但益悲。

大家好,我是皮皮。

一、前言

前几天在Python最强王者交流群【༺ཉི།།与歌同行ཉྀ༻】问了一个Python字典的处理问题,提问截图如下:

下面是他的元素数据。

a = [
    {'time': '8:30-9:30', 'content': '开场致词', 'speaker': [{'name': '李明', 'hs': '重庆附属永川'}]},
    {'time': '8:30-9:30', 'content': '开场致词', 'speaker': [{'name': '主席:李伟', 'hs': '苏州附属院'}]},
    {'time': '8:30-9:30', 'content': '开场致词', 'speaker': [{'name': '王斌', 'hs': '佛山市院'}]}
    ]

想要达到预期的效果如下图所示:

二、实现过程

这里【甯同学】提供了一个代码,如下所示:

后来我自己也给了一个代码,代码如下:

a = [
    {'time': '8:30-9:30', 'content': '开场致词', 'speaker': [{'name': '李明', 'hs': '重庆附属永川'}]},
    {'time': '8:30-9:30', 'content': '开场致词', 'speaker': [{'name': '主席:李伟', 'hs': '苏州附属院'}]},
    {'time': '8:30-9:30', 'content': '开场致词', 'speaker': [{'name': '王斌', 'hs': '佛山市院'}]}
]
new_dict = {}
new_lst = []
for item in a:
    new_dict.setdefault('speaker', []).append(item['speaker'])

# print(new_dict)
front_dict = {'time': '8:30-9:30', 'content': '开场致词'}
# new_lst.append(a[0][0])
final_dict = {**front_dict, **new_dict}
print(final_dict)

有些冗余,但是也是可以得到预期的效果的。

后来【甯同学】还使用Pandas秀了一把,如下所示:

后来【隔壁😼山楂】针对上面的两个代码,都做了一次优化,代码分别如下:

# 这个写成这样
from itertools import groupby
from operator import itemgetter

[dict(zip(('time', 'content', 'speaker'), 
          (*key, sum([i['speaker'] for i in value], [])))) 
 for key, value in groupby(a, itemgetter('time', 'content'))]

针对Pandas的写法,代码如下:

# 这个写成这样
import pandas as pd

pd.DataFrame(a).groupby(['time', 'content']).speaker.sum().reset_index().to_dict(orient='records')

简直太秀了!

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python字典处理的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

最后感谢粉丝【༺ཉི།།与歌同行ཉྀ༻】提问,感谢【dcpeng】、【甯同学】、【隔壁😼山楂】给出的思路和代码解析,感谢【此类生物】、【冫马讠成】等人参与学习交流。

大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting),应粉丝要求,我创建了一些高质量的Python付费学习交流群,欢迎大家加入我的Python学习交流群!

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

------------------- End -------------------

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群】

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

原文作者:Python爬虫与数据挖掘;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2024-12-18

  • 博文量
    913
  • 访问量
    379581