我有一个包含重复项目的列表,我想要一个具有频率的唯一项目列表.
例如,我有['a', 'a', 'b', 'b', 'b'],我想要[('a', 2), ('b', 3)].
寻找一种简单的方法来做到这一点,而不需要循环两次.
在您尝试阅读整篇文章之前,请了解:
fameta::counter类中,以解决一些剩余的怪癖。你可以在 github 上找到它;自从 Filip Roséen 在 2015 年发现/发明了通过友元注入编译时间计数器的黑魔法是在 C++ 中,我一直对这个设备有点着迷,所以当 CWG决定功能必须去时,我很失望,但仍然充满希望可以通过向他们展示一些引人注目的用例来改变他们的想法。
然后,几年前,我决定再看一遍,以便uberswitch es可以嵌套 - 在我看来,这是一个有趣的用例 - 只是发现它不再适用于新版本的可用的编译器,即使问题 2118是(现在仍然是)处于打开状态:代码会编译,但计数器不会增加。
该问题已在 Roséen 的网站和最近的 stackoverflow 上报告:Does C++ support compile-time counters?
我想了解编译器发生了什么变化,使看似仍然有效的 C++ 不再起作用。为此,我在互联网上广泛搜索,寻找有人谈论它,但无济于事。所以我开始尝试并得出了一些结论,我在这里提出这些结论是希望能从这里的知识渊博的人那里得到反馈。
为了清楚起见,我在下面展示了 Roséen 的原始代码。有关其工作原理的说明,请参阅他的网站:
template<int N>
struct flag {
friend constexpr int adl_flag …Run Code Online (Sandbox Code Playgroud) c++ counter friend-function argument-dependent-lookup constexpr
我使用整数作为计数器.整数只会增加,肯定会有多个线程同时增加它.在没有其他线程尝试访问其值时,在程序执行结束时读取此计数器的值.
我假设我不必为这种仅增量计数器使用锁或任何类型的同步.这是正确的吗?如果这有任何区别,我用Java编写代码.
但是,关于计算两个或更多系列组合的最佳方法的问题较少.解决方案呈现(1,2),但是,当和为什么要使用的每个没有讨论.
以下是三种潜在方法的基准测试.我有两个具体问题:
grouper效率更高count?我预计count它会更高效,因为它在C中实现.grouper即使列数从2增加到4 ,优越的性能仍然存在.value_counter表现不佳grouper?这是由于从列表构建列表或系列的成本吗?我理解输出是不同的,这也应该告知选择.例如,使用连续numpy数组与字典理解相比,按计数过滤更有效:
x, z = grouper(df), count(df)
%timeit x[x.values > 10] # 749µs
%timeit {k: v for k, v in z.items() if v > 10} # 9.37ms
Run Code Online (Sandbox Code Playgroud)
然而,我的问题的重点是在一系列与字典中建立可比较结果的表现.我的C知识是有限的,但我会感谢任何可以指出这些方法的基础逻辑的答案.
基准代码
import pandas as pd
import numpy as np
from collections import Counter
np.random.seed(0)
m, n = …Run Code Online (Sandbox Code Playgroud) 一旦前一个输入达到最大长度值,如何关注下一个输入?
a: <input type="text" maxlength="5" />
b: <input type="text" maxlength="5" />
c: <input type="text" maxlength="5" />
Run Code Online (Sandbox Code Playgroud)
如果用户粘贴的文本大于maxlength,理想情况下它应该溢出到下一个输入中.
jsFiddle: http ://jsfiddle.net/4m5fg/1/
我必须强调,我不希望使用的插件,因为我宁愿学习背后的逻辑,不是使用已经存在的东西.感谢您的理解.
我想知道python 2.7中对象most_common提供的函数的复杂性是多少collections.Counter.
更具体地说,是Counter保持某种排序列表,当它被更新,允许执行的most_common速度比运行O(n)时n添加计数器的(唯一的)项目的数量?为了您的信息,我正在处理一些大量的文本数据,试图找到第n个最常见的令牌.
我检查了官方文档(https://docs.python.org/2/library/collections.html#collections.Counter),CPython wiki(https://wiki.python.org/moin/TimeComplexity)但我可以找不到答案.先感谢您!
罗曼.
我正考虑在我的应用程序中使用Amazon DynamoDB,我对其原子计数器的可靠性有疑问.
我正在构建一个分布式应用程序,它需要同时并一致地增加/减少存储在Dynamo属性中的计数器.我想知道Dynamo的原子计数器在一个繁重的并发环境中是多么可靠,其中并发级别非常高(例如,平均速率为20k并发命中率 - 获得这个想法,这将是近52亿增量/每月递减).
柜台应该是超级可靠的,永远不会错过任何一个.有人在这样的关键环境中测试了DynamoDB吗?
谢谢
我试图得到dict键,它的值在所有dict的值中都是max.我找到了两种方法,都不够优雅.
d= {'a':2,'b':5,'c':3}
# 1st way
print [k for k in d.keys() if d[k] == max(d.values())][0]
# 2nd way
print Counter(d).most_common(1)[0][0]
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
是否有任何经过测试和使用的组件可以用来显示"Count selector"这样的?
我们的目标是让它从API v7开始运行.

(取自DatePickerDialog)
阅读如何super()工作,我遇到了关于如何创建有序计数器的这个方法:
from collections import Counter, OrderedDict
class OrderedCounter(Counter, OrderedDict):
'Counter that remembers the order elements are first seen'
def __repr__(self):
return '%s(%r)' % (self.__class__.__name__,
OrderedDict(self))
def __reduce__(self):
return self.__class__, (OrderedDict(self),)
Run Code Online (Sandbox Code Playgroud)
例如:
oc = OrderedCounter('adddddbracadabra')
print(oc)
OrderedCounter(OrderedDict([('a', 5), ('d', 6), ('b', 2), ('r', 2), ('c', 1)]))
Run Code Online (Sandbox Code Playgroud)
有人能够解释这是如何神奇地起作用的吗?
这也出现在Python文档中.
counter ×10
python ×5
dictionary ×3
increment ×2
android ×1
atomic ×1
c++ ×1
components ×1
concurrency ×1
constexpr ×1
dataframe ×1
iteration ×1
java ×1
javascript ×1
jquery ×1
list ×1
pandas ×1
python-3.x ×1