熱線電話:13121318867

登錄
首頁精彩閱讀盤點一個Python字典處理的基礎題目--方法多多
盤點一個Python字典處理的基礎題目--方法多多
2022-08-29
收藏

作者:Python進階者

來源:Python爬蟲與數據挖掘

一、前言

前幾天在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字典處理的問題,文中針對該問題給出了具體的解析和代碼實現,幫助粉絲順利解決了問題。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢