POK*_*OKO 0 python counter list
在python列表中,我想删除重复小于'k'的所有元素.例如,如果k == 3那么我们的列表是:
l = [a,b,c,c,c,a,d,e,e,d,d]
Run Code Online (Sandbox Code Playgroud)
然后输出必须是:
[c,c,c,d,d,d]
Run Code Online (Sandbox Code Playgroud)
什么是快速的方法(我的数据很大),任何好的pythonic建议?
这是我编码的,但我不认为它是最快和最pythonic的方式:
from collections import Counter
l = ['a', 'b', 'c', 'c', 'c', 'a', 'd', 'e', 'e', 'd', 'd']
counted = Counter(l)
temp = []
for i in counted:
if counted[i] < 3:
temp.append(i)
new_l = []
for i in l:
if i not in temp:
new_l.append(i)
print(new_l)
Run Code Online (Sandbox Code Playgroud)
您可以使用collections.Counter构造字典将值映射到计数.然后使用列表推导来筛选大于指定值的计数.
from collections import Counter
L = list('abcccadeedd')
c = Counter(L)
res = [x for x in L if c[x] >=3]
# ['c', 'c', 'c', 'd', 'd', 'd']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |