我想了解什么是猴子补丁或猴子补丁?
这类似于方法/运算符重载或委托吗?
这些东西有什么共同之处吗?
字典在Python 3.6中排序(至少在CPython实现下),与之前的版本不同.这似乎是一个重大变化,但它只是文档中的一小段.它被描述为CPython实现细节而不是语言特性,但也暗示这可能成为未来的标准.
在保留元素顺序的同时,新字典实现如何比旧字典实现更好?
以下是文档中的文字:
dict()现在使用PyPy开创的"紧凑"表示.与Python 3.5相比,新dict()的内存使用量减少了20%到25%.PEP 468(在函数中保留**kwargs的顺序.)由此实现.这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖(这可能会在未来发生变化,但是在更改语言规范之前,希望在几种版本的语言中使用这个新的dict实现为所有当前和未来的Python实现强制命令保留语义;这也有助于保持与随机迭代顺序仍然有效的语言的旧版本的向后兼容性,例如Python 3.5).(由INADA Naoki在issue 27350中提供.最初由Raymond Hettinger提出的想法.)
2017年12月更新:Python 3.7 保证了dict保留插入顺序
我想知道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)但我可以找不到答案.先感谢您!
罗曼.
阅读如何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来自collectionspython的类。我希望按Counter先到对象的顺序输出。
例如:
offset=['a','b','c','a','b','b','b','c','c','c','c','c']
counts = Counter(offset)
print counts
Run Code Online (Sandbox Code Playgroud)
输出为:
Counter({'c': 6, 'b': 4, 'a': 2})
Run Code Online (Sandbox Code Playgroud)
正如我希望输出如下所示,按照第一个出现的对象的顺序:
Counter({'a': 2, 'b': 4, 'c': 6})
Run Code Online (Sandbox Code Playgroud)
那可能吗?
谢谢
python ×5
counter ×3
dictionary ×2
python-3.x ×2
output ×1
python-2.7 ×1
python-3.6 ×1
terminology ×1