mirror of
https://github.com/python/cpython.git
synced 2024-12-17 22:05:04 +08:00
merge heads
This commit is contained in:
commit
e451ec393f
@ -264,7 +264,7 @@ Common patterns for working with :class:`Counter` objects::
|
|||||||
c.items() # convert to a list of (elem, cnt) pairs
|
c.items() # convert to a list of (elem, cnt) pairs
|
||||||
Counter(dict(list_of_pairs)) # convert from a list of (elem, cnt) pairs
|
Counter(dict(list_of_pairs)) # convert from a list of (elem, cnt) pairs
|
||||||
c.most_common()[:-n:-1] # n least common elements
|
c.most_common()[:-n:-1] # n least common elements
|
||||||
c += Counter() # remove zero and negative counts
|
+c # remove zero and negative counts
|
||||||
|
|
||||||
Several mathematical operations are provided for combining :class:`Counter`
|
Several mathematical operations are provided for combining :class:`Counter`
|
||||||
objects to produce multisets (counters that have counts greater than zero).
|
objects to produce multisets (counters that have counts greater than zero).
|
||||||
@ -284,6 +284,18 @@ counts, but the output will exclude results with counts of zero or less.
|
|||||||
>>> c | d # union: max(c[x], d[x])
|
>>> c | d # union: max(c[x], d[x])
|
||||||
Counter({'a': 3, 'b': 2})
|
Counter({'a': 3, 'b': 2})
|
||||||
|
|
||||||
|
Unary addition and substraction are shortcuts for adding an empty counter
|
||||||
|
or subtracting from an empty counter.
|
||||||
|
|
||||||
|
>>> c = Counter(a=2, b=-4)
|
||||||
|
>>> +c
|
||||||
|
Counter({'a': 2})
|
||||||
|
>>> -c
|
||||||
|
Counter({'b': 4})
|
||||||
|
|
||||||
|
.. versionadded:: 3.3
|
||||||
|
Added support for unary plus and unary minus.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Counters were primarily designed to work with positive integers to represent
|
Counters were primarily designed to work with positive integers to represent
|
||||||
|
@ -672,6 +672,17 @@ class Counter(dict):
|
|||||||
result[elem] = newcount
|
result[elem] = newcount
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def __pos__(self):
|
||||||
|
'Adds an empty counter, effectively stripping negative and zero counts'
|
||||||
|
return self + Counter()
|
||||||
|
|
||||||
|
def __neg__(self):
|
||||||
|
'''Subtracts from an empty counter. Strips positive and zero counts,
|
||||||
|
and flips the sign on negative counts.
|
||||||
|
|
||||||
|
'''
|
||||||
|
return Counter() - self
|
||||||
|
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
### ChainMap (helper for configparser and string.Template)
|
### ChainMap (helper for configparser and string.Template)
|
||||||
|
@ -943,6 +943,11 @@ class TestCounter(unittest.TestCase):
|
|||||||
c.subtract('aaaabbcce')
|
c.subtract('aaaabbcce')
|
||||||
self.assertEqual(c, Counter(a=-1, b=0, c=-1, d=1, e=-1))
|
self.assertEqual(c, Counter(a=-1, b=0, c=-1, d=1, e=-1))
|
||||||
|
|
||||||
|
def test_unary(self):
|
||||||
|
c = Counter(a=-5, b=0, c=5, d=10, e=15,g=40)
|
||||||
|
self.assertEqual(dict(+c), dict(c=5, d=10, e=15, g=40))
|
||||||
|
self.assertEqual(dict(-c), dict(a=5))
|
||||||
|
|
||||||
def test_helper_function(self):
|
def test_helper_function(self):
|
||||||
# two paths, one for real dicts and one for other mappings
|
# two paths, one for real dicts and one for other mappings
|
||||||
elems = list('abracadabra')
|
elems = list('abracadabra')
|
||||||
|
@ -254,6 +254,8 @@ Library
|
|||||||
- Issue #12540: Prevent zombie IDLE processes on Windows due to changes
|
- Issue #12540: Prevent zombie IDLE processes on Windows due to changes
|
||||||
in os.kill().
|
in os.kill().
|
||||||
|
|
||||||
|
- Add support for unary plus and unary minus to collections.Counter().
|
||||||
|
|
||||||
- Issue #12683: urlparse updated to include svn as schemes that uses relative
|
- Issue #12683: urlparse updated to include svn as schemes that uses relative
|
||||||
paths. (svn from 1.5 onwards support relative path).
|
paths. (svn from 1.5 onwards support relative path).
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user