相关疑难解决方法(0)

如何计算列表中元素的频率?

我需要在列表中找到元素的频率

a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
Run Code Online (Sandbox Code Playgroud)

输出 - >

b = [4,4,2,1,2]
Run Code Online (Sandbox Code Playgroud)

另外我想从a中删除重复项

a = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

python counter frequency counting

214
推荐指数
12
解决办法
42万
查看次数

Python的列表推导(理想情况下)可以在SQL中执行相当于'count(*)... group by ...'的操作吗?

我认为列表推导可能会给我这个,但我不确定:Python(2.6)中的任何优雅解决方案通常用于选择列表中的唯一对象并提供计数?

(我已经定义了一个__eq__定义我的对象定义的唯一性).

所以在RDBMS-land中,这样的事情:

CREATE TABLE x(n NUMBER(1));
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(2);

SELECT COUNT(*), n FROM x
GROUP BY n;
Run Code Online (Sandbox Code Playgroud)

这使:

COUNT(*) n
==========
3        1
1        2
Run Code Online (Sandbox Code Playgroud)

所以,这是我在Python中的等效列表:

[1,1,1,2]
Run Code Online (Sandbox Code Playgroud)

我想要与上面给出的SQL SELECT相同的输出.

编辑:我给这里的例子是简化的,我其实处理用户定义的对象实例的列表:只是为了完整性我有额外的代码,我需要得到整个事情的工作:

import hashlib

def __hash__(self):
    md5=hashlib.md5()
    [md5.update(i) for i in self.my_list_of_stuff]
    return int(md5.hexdigest(),16)
Run Code Online (Sandbox Code Playgroud)

__hash__需要使用该方法才能使set转换工作(我选择了在2.6中工作的列表理解思想[尽管事实上我知道这涉及效率低下(参见注释) - 我的数据集足够小,因为它不是问题]).my_list_of_stuff上面是我的对象定义中的(字符串)列表.

python list count python-2.6

5
推荐指数
4
解决办法
4607
查看次数

python计算列表中的项目并保持其出现顺序

给定:列表,例如l = [4,4,4,4,5,5,5,6,7,7,7] Todo:获取元素的计数并保持其出现顺序,例如:[( 4,4),(5,3),(6,1),(7,3)]

我可以这样做:

tmpL    = [(i,l.count(i)) for i in l]
tmpS    = set()
cntList = [x for x in tmpL if x not in tmpS and not tmpS.add(x)]
Run Code Online (Sandbox Code Playgroud)

但有更好的方法吗?我在这里看到了这个链接,但它对计数进行了排序,因此打破了顺序.

编辑:性能不是解决方案的问题,更可取的是内置的东西.

python

4
推荐指数
2
解决办法
1638
查看次数

标签 统计

python ×3

count ×1

counter ×1

counting ×1

frequency ×1

list ×1

python-2.6 ×1