python统计数组元素出现次数以及排序

最后完成的我的世界阶段,加入了统计热门UP主的模块:统计所有视频的UP主出现最多的次数,获取前10的UP主。

主要流程就是:

将数据库所有的author获取放入数组,进行次数统计;

对次数进行排序,当然对应的UP主也是需要跟着跑的,因此考虑到使用字典;

获取前10名的UP主。

过程中我得到帮助的有:

Python统计列表中的重复项出现的次数的方法_python_脚本之家  http://www.jb51.net/article/53911.htm

Python删除list中的元素  https://www.douban.com/note/277146395/

Python中 字典排序、列表排序 - duhaizhang的个人页面  https://my.oschina.net/duhaizhang/blog/71123

统计次数最终我还是自己写出来了,没有用内置的函数,因为后面需要字典来排序,所以内置函数可以当作了解。

其实自己写也不是很难,主要把握好下标的变化和长度的变化即可。

from collections import Counter

str = ['Tom', 'Sim', 'Jack', 'Tom', 'Sleep', 'We', 'Tom', 'Tom', 'Sim', 'We', 'Tom']
dic = Counter(str)

for i in dic.iteritems():
    print i[0], i[1]

count = 1
l = len(str)-1
x = {}
t = 0

while t <= l:
    th = str[t]
    i = t + 1
    while i <= l:
        if th == str[i]:
            count += 1
            del str[i]
            i -= 1
            l -= 1
        i += 1
    x[th] = count
    count = 1
    t += 1

print x
y = sorted(x.iteritems(), key=lambda x: x[1], reverse=True)
print y

three = (y[0], y[1], y[2])
for t in three:
    print t[0]

item = x.items()
item.sort()
for k,v in item:
    print k,v

运行结果:

We 2
Sleep 1
Jack 1
Sim 2
Tom 5
{'We': 2, 'Sleep': 1, 'Jack': 1, 'Sim': 2, 'Tom': 5}
[('Tom', 5), ('We', 2), ('Sim', 2), ('Sleep', 1), ('Jack', 1)]
Tom
We
Sim
Jack 1
Sim 2
Sleep 1
Tom 5
We 2

以上代码是我解决统计次数的过程。

而当具体应用到实际模块那里,就前后多了两步,这里就不放代码了:

把str改成从数据库获取到的数据

最后只需要字典前10的元素

即可。


---------------17年8月8号更新---------------

话不多少了,前几天才写的一篇博

温故而知新,我觉得可以--Python番 -》 http://blog.youkuaiyun.com/zy_dream/article/details/76571974

给自己一个眼神自己体会

统计数组元素的出现次数并进行排序,是数据分析和处理中的基础操作。为了详细解答这一问题,并帮助你掌握Python在这一领域中的应用,以下将分别介绍四种不同的实现方法,每一种方法都能有效地解决问题,具体如下: 参考资源链接:[Python统计数组元素频次与排序示例](https://wenku.youkuaiyun.com/doc/6412b4eabe7fbd1778d4147a?spm=1055.2569.3001.10343) 1. **手动遍历和计数**: 这种方法通过遍历数组,手动跟踪每个元素的出现次数,并将结果存储在一个列表中。在实现时,需要注意避免重复计数和排序时的效率问题。示例代码如下: ```python lis = [你的数组] c = [] for item in lis: if item not in c: c.append(item) b = [] for i in c: count = lis.count(i) b.append([i, count]) b.sort(key=lambda x: x[1], reverse=True) ``` 这种方法适用于小型数组,但效率较低,不推荐处理大规模数据。 2. **利用`set`去重和计数**: 利用集合(set)去除数组中的重复元素,然后通过嵌套循环来计算每个元素的出现次数,并最终排序。示例代码如下: ```python lis = [你的数组] c = set(lis) b = [] for item in c: count = lis.count(item) b.append([item, count]) b.sort(key=lambda x: x[1], reverse=True) ``` 这种方法比手动遍历效率更高,但仍需改进以适应大数据集。 3. **使用字典存储次数**: 使用字典(dict)存储元素及其出现次数,然后对字典的键值对进行降序排序。示例代码如下: ```python from collections import Counter lis = [你的数组] c = Counter(lis) sorted_elements = sorted(c.items(), key=lambda x: x[1], reverse=True) ``` 字典是处理此类问题的高效方法,特别是当结合collections.Counter类使用时。 4. **利用`collections.Counter`**: collections模块中的Counter类是专门用于计数的工具,能够直接得到每个元素的出现次数,并允许我们轻松地进行排序。示例代码如下: ```python from collections import Counter lis = [你的数组] counter = Counter(lis) sorted_elements = sorted(counter.items(), key=lambda x: x[1], reverse=True) ``` 这种方法最为简洁高效,是处理大规模数据时的首选。 以上四种方法各有优缺点,但都可以实现元素出现次数统计排序。在实际应用中,可以根据数据集的大小和具体需求选择合适的方法。《Python统计数组元素频次与排序示例》提供了更为详细的介绍和示例代码,可以帮助你更深入地理解和掌握这些方法。 参考资源链接:[Python统计数组元素频次与排序示例](https://wenku.youkuaiyun.com/doc/6412b4eabe7fbd1778d4147a?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值