python处理列表中字典_请教一下 Python 中列表字典清洗数据的问题

这篇博客介绍了在数据量较小的情况下,如何使用Python对字典列表进行排序和分组。文中提到了两种方法:一种是通过迭代和条件判断实现分组,另一种是利用pandas库的groupby函数。对于大量数据,推荐使用pandas,因为它具有较高的处理效率。通过示例展示了如何将数据按类型分组,并获取每个分组的数据大小。
摘要由CSDN通过智能技术生成

necomancer

2018-12-05 11:24:04 +08:00

数据少的话:

lst = sorted(l, key=(lambda x : x.get('type')))

ret = [[]]

for prv, nxt in zip(lst[:-1], lst[1:]):

....tmp = ret[-1]

....tmp.append(prv)

....if prv['type']!=nxt['type']:

........ret.append([])

tmp = ret[-1]

tmp.append(t[-1])

然后取 ret 里最多的,或者直接用 groupby

[ list(g) for c, g in groupby(lst, key=(lambda x : x.get('type'))) ]

但是都需要排序。

或者用 pandas:

import pandas as pd

l= [{'name': 'aa', 'type': '游戏'},

{'name': 'cc', 'type': '学习'},

{'name': 'bb', 'type': '游戏'}] # 可以不用考虑顺序

list(pd.DataFrame(l).groupby('type')) 可以搞定,输出是 n 个 categories 的 tuple 的 list

[(分组名 1,分组 1 数据的 dataframe),(分组名 2,分组 2 数据的 dataframe)...],数据大小可以用 dataframe 的 shape 来确定。

In [40]: list(pd.DataFrame(l).groupby('type'))

Out[40]:

[('学习', name type

1 cc 学习), ('游戏', name type

0 aa 游戏

2 bb 游戏)]

In [41]: p=list(pd.DataFrame(l).groupby('type'))[1][1]

In [42]: p.shape

Out[42]: (2, 2)

In [43]: p

Out[43]:

name type

0 aa 游戏

2 bb 游戏

对一定量的数据,pandas 就可以有很高的处理效率了,如果数据量再大,考虑上 #1 的方法吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值