API Reference#
All public functions are available from the main module.
import pydash
pydash.<function>
This is the recommended way to use pydash.
# OK (importing main module)
import pydash
pydash.where({})
# OK (import from main module)
from pydash import where
where({})
# NOT RECOMMENDED (importing from submodule)
from pydash.collections import where
Only the main pydash module API is guaranteed to adhere to semver. It’s possible that backwards incompatibility outside the main module API could be broken between minor releases.
py_ Instance#
There is a special py_
instance available from pydash
that supports method calling and method chaining from a single object:
from pydash import py_
# Method calling
py_.initial([1, 2, 3, 4, 5]) == [1, 2, 3, 4]
# Method chaining
py_([1, 2, 3, 4, 5]).initial().value() == [1, 2, 3, 4]
# Method aliasing to underscore suffixed methods that shadow builtin names
py_.map is py_.map_
py_([1, 2, 3]).map(_.to_string).value() == py_([1, 2, 3]).map_(_.to_string).value()
The py_
instance is basically a combination of using pydash.<function>
and pydash.chain
.
A full listing of aliased py_
methods:
_.object
ispydash.arrays.object_()
_.slice
ispydash.arrays.slice_()
_.zip
ispydash.arrays.zip_()
_.all
ispydash.collections.all_()
_.any
ispydash.collections.any_()
_.filter
ispydash.collections.filter_()
_.map
ispydash.collections.map_()
_.max
ispydash.collections.max_()
_.min
ispydash.collections.min_()
_.reduce
ispydash.collections.reduce_()
_.pow
ispydash.numerical.pow_()
_.round
ispydash.numerical.round_()
_.sum
ispydash.numerical.sum_()
_.property
ispydash.utilities.property_()
_.range
ispydash.utilities.range_()
Arrays#
Functions that operate on lists.
New in version 1.0.0.
- pydash.arrays.chunk(array: Sequence[T], size: int = 1) List[Sequence[T]] [source]#
Creates a list of elements split into groups the length of size. If array can’t be split evenly, the final chunk will be the remaining elements.
- Parameters:
array – List to chunk.
size – Chunk size. Defaults to
1
.
- Returns:
New list containing chunks of array.
Example
>>> chunk([1, 2, 3, 4, 5], 2) [[1, 2], [3, 4], [5]]
New in version 1.1.0.
- pydash.arrays.compact(array: Iterable[T | None]) List[T] [source]#
Creates a list with all falsey values of array removed.
- Parameters:
array – List to compact.
- Returns:
Compacted list.
Example
>>> compact(['', 1, 0, True, False, None]) [1, True]
New in version 1.0.0.
- pydash.arrays.concat(*arrays: Iterable[T]) List[T] [source]#
Concatenates zero or more lists into one.
- Parameters:
arrays – Lists to concatenate.
- Returns:
Concatenated list.
Example
>>> concat([1, 2], [3, 4], [[5], [6]]) [1, 2, 3, 4, [5], [6]]
New in version 2.0.0.
Changed in version 4.0.0: Renamed from
cat
toconcat
.
- pydash.arrays.difference(array: Iterable[T], *others: Iterable[T]) List[T] [source]#
Creates a list of list elements not present in others.
- Parameters:
array – List to process.
others – Lists to check.
- Returns:
Difference between others.
Example
>>> difference([1, 2, 3], [1], [2]) [3]
New in version 1.0.0.
- pydash.arrays.difference_by(array: Iterable[T], *others: Iterable[T], iteratee: int | str | List | Tuple | Dict | Callable[[T], Any] | None) List[T] [source]#
- pydash.arrays.difference_by(array: Iterable[T], *others: int | str | List | Tuple | Dict | Iterable[T] | Callable[[T], Any]) List[T]
This method is like
difference()
except that it accepts an iteratee which is invoked for each element of each array to generate the criterion by which they’re compared. The order and references of result values are determined by array. The iteratee is invoked with one argument:(value)
.- Parameters:
array – The array to find the difference of.
others – Lists to check for difference with array.
- Keyword Arguments:
iteratee – Function to transform the elements of the arrays. Defaults to
identity()
.- Returns:
Difference between others.
Example
>>> difference_by([1.2, 1.5, 1.7, 2.8], [0.9, 3.2], round) [1.5, 1.7]
New in version 4.0.0.
- pydash.arrays.difference_with(array: Iterable[T], *others: Iterable[T2], comparator: Callable[[T, T2], Any] | None) List[T] [source]#
- pydash.arrays.difference_with(array: Iterable[T], *others: Iterable[T2] | Callable[[T, T2], Any]) List[T]
This method is like
difference()
except that it accepts a comparator which is invoked to compare the elements of all arrays. The order and references of result values are determined by the first array. The comparator is invoked with two arguments:(arr_val, oth_val)
.- Parameters:
array – The array to find the difference of.
others – Lists to check for difference with array.
- Keyword Arguments:
comparator – Function to compare the elements of the arrays. Defaults to
is_equal()
.- Returns:
Difference between others.
Example
>>> array = ['apple', 'banana', 'pear'] >>> others = (['avocado', 'pumpkin'], ['peach']) >>> comparator = lambda a, b: a[0] == b[0] >>> difference_with(array, *others, comparator=comparator) ['banana']
New in version 4.0.0.
- pydash.arrays.drop(array: Sequence[T], n: int = 1) List[T] [source]#
Creates a slice of array with n elements dropped from the beginning.
- Parameters:
array – List to process.
n – Number of elements to drop. Defaults to
1
.
- Returns:
Dropped list.
Example
>>> drop([1, 2, 3, 4], 2) [3, 4]
New in version 1.0.0.
Changed in version 1.1.0: Added
n
argument and removed as alias ofrest()
.Changed in version 3.0.0: Made
n
default to1
.
- pydash.arrays.drop_right(array: Sequence[T], n: int = 1) List[T] [source]#
Creates a slice of array with n elements dropped from the end.
- Parameters:
array – List to process.
n – Number of elements to drop. Defaults to
1
.
- Returns:
Dropped list.
Example
>>> drop_right([1, 2, 3, 4], 2) [1, 2]
New in version 1.1.0.
Changed in version 3.0.0: Made
n
default to1
.
- pydash.arrays.drop_right_while(array: Sequence[T], predicate: Callable[[T, int, List[T]], Any]) List[T] [source]#
- pydash.arrays.drop_right_while(array: Sequence[T], predicate: Callable[[T, int], Any]) List[T]
- pydash.arrays.drop_right_while(array: Sequence[T], predicate: Callable[[T], Any]) List[T]
- pydash.arrays.drop_right_while(array: Sequence[T], predicate: None = None) List[T]
Creates a slice of array excluding elements dropped from the end. Elements are dropped until the predicate returns falsey. The predicate is invoked with three arguments:
(value, index, array)
.- Parameters:
array – List to process.
predicate – Predicate called per iteration
- Returns:
Dropped list.
Example
>>> drop_right_while([1, 2, 3, 4], lambda x: x >= 3) [1, 2]
New in version 1.1.0.
- pydash.arrays.drop_while(array: Sequence[T], predicate: Callable[[T, int, List[T]], Any]) List[T] [source]#
- pydash.arrays.drop_while(array: Sequence[T], predicate: Callable[[T, int], Any]) List[T]
- pydash.arrays.drop_while(array: Sequence[T], predicate: Callable[[T], Any]) List[T]
- pydash.arrays.drop_while(array: Sequence[T], predicate: None = None) List[T]
Creates a slice of array excluding elements dropped from the beginning. Elements are dropped until the predicate returns falsey. The predicate is invoked with three arguments:
(value, index, array)
.- Parameters:
array – List to process.
predicate – Predicate called per iteration
- Returns:
Dropped list.
Example
>>> drop_while([1, 2, 3, 4], lambda x: x < 3) [3, 4]
New in version 1.1.0.
- pydash.arrays.duplicates(array: Sequence[T], iteratee: Callable[[T], Any] | int | str | List | Tuple | Dict | None = None) List[T] [source]#
Creates a unique list of duplicate values from array. If iteratee is passed, each element of array is passed through an iteratee before duplicates are computed. The iteratee is invoked with three arguments:
(value, index, array)
. If an object path is passed for iteratee, the created iteratee will return the path value of the given element. If an object is passed for iteratee, the created filter style iteratee will returnTrue
for elements that have the properties of the given object, elseFalse
.- Parameters:
array – List to process.
iteratee – Iteratee applied per iteration.
- Returns:
List of duplicates.
Example
>>> duplicates([0, 1, 3, 2, 3, 1]) [3, 1]
New in version 3.0.0.
- pydash.arrays.fill(array: Sequence[T], value: T2, start: int = 0, end: int | None = None) List[T | T2] [source]#
Fills elements of array with value from start up to, but not including, end.
- Parameters:
array – List to fill.
value – Value to fill with.
start – Index to start filling. Defaults to
0
.end – Index to end filling. Defaults to
len(array)
.
- Returns:
Filled array.
Example
>>> fill([1, 2, 3, 4, 5], 0) [0, 0, 0, 0, 0] >>> fill([1, 2, 3, 4, 5], 0, 1, 3) [1, 0, 0, 4, 5] >>> fill([1, 2, 3, 4, 5], 0, 0, 100) [0, 0, 0, 0, 0]
Warning
array is modified in place.
New in version 3.1.0.
- pydash.arrays.find_index(array: Iterable[T], predicate: Callable[[T, int, List[T]], Any]) int [source]#
- pydash.arrays.find_index(array: Iterable[T], predicate: Callable[[T, int], Any]) int
- pydash.arrays.find_index(array: Iterable[T], predicate: Callable[[T], Any]) int
- pydash.arrays.find_index(array: Iterable[Any], predicate: int | str | List | Tuple | Dict) int
- pydash.arrays.find_index(array: Iterable[Any], predicate: None = None) int
This method is similar to
pydash.collections.find()
, except that it returns the index of the element that passes the predicate check, instead of the element itself.- Parameters:
array – List to process.
predicate – Predicate applied per iteration.
- Returns:
Index of found item or
-1
if not found.
Example
>>> find_index([1, 2, 3, 4], lambda x: x >= 3) 2 >>> find_index([1, 2, 3, 4], lambda x: x > 4) -1
New in version 1.0.0.
- pydash.arrays.find_last_index(array: Iterable[T], predicate: Callable[[T, int, List[T]], Any]) int [source]#
- pydash.arrays.find_last_index(array: Iterable[T], predicate: Callable[[T, int], Any]) int
- pydash.arrays.find_last_index(array: Iterable[T], predicate: Callable[[T], Any]) int
- pydash.arrays.find_last_index(array: Iterable[Any], predicate: int | str | List | Tuple | Dict) int
- pydash.arrays.find_last_index(array: Iterable[Any], predicate: None = None) int
This method is similar to
find_index()
, except that it iterates over elements from right to left.- Parameters:
array – List to process.
predicate – Predicate applied per iteration.
- Returns:
Index of found item or
-1
if not found.
Example
>>> find_last_index([1, 2, 3, 4], lambda x: x >= 3) 3 >>> find_last_index([1, 2, 3, 4], lambda x: x > 4) -1
New in version 1.0.0.
- pydash.arrays.flatten(array: Iterable[Iterable[T]]) List[T] [source]#
- pydash.arrays.flatten(array: Iterable[T]) List[T]
Flattens array a single level deep.
- Parameters:
array – List to flatten.
- Returns:
Flattened list.
Example
>>> flatten([[1], [2, [3]], [[4]]]) [1, 2, [3], [4]]
New in version 1.0.0.
Changed in version 2.0.0: Removed callback option. Added
is_deep
option. Made it shallow by default.Changed in version 4.0.0: Removed
is_deep
option. Useflatten_deep()
instead.
- pydash.arrays.flatten_deep(array: Iterable) List [source]#
Flattens an array recursively.
- Parameters:
array – List to flatten.
- Returns:
Flattened list.
Example
>>> flatten_deep([[1], [2, [3]], [[4]]]) [1, 2, 3, 4]
New in version 2.0.0.
- pydash.arrays.flatten_depth(array: Iterable, depth: int = 1) List [source]#
Recursively flatten array up to depth times.
- Parameters:
array – List to flatten.
depth – Depth to flatten to. Defaults to
1
.
- Returns:
Flattened list.
Example
>>> flatten_depth([[[1], [2, [3]], [[4]]]], 1) [[1], [2, [3]], [[4]]] >>> flatten_depth([[[1], [2, [3]], [[4]]]], 2) [1, 2, [3], [4]] >>> flatten_depth([[[1], [2, [3]], [[4]]]], 3) [1, 2, 3, 4] >>> flatten_depth([[[1], [2, [3]], [[4]]]], 4) [1, 2, 3, 4]
New in version 4.0.0.
- pydash.arrays.from_pairs(pairs: Iterable[Tuple[T, T2]]) Dict[T, T2] [source]#
- pydash.arrays.from_pairs(pairs: Iterable[List[T | T2]]) Dict[T | T2, T | T2]
Returns a dict from the given list of pairs.
- Parameters:
pairs – List of key-value pairs.
- Returns:
dict
Example
>>> from_pairs([['a', 1], ['b', 2]]) == {'a': 1, 'b': 2} True
New in version 4.0.0.
- pydash.arrays.head(array: Sequence[T]) T | None [source]#
Return the first element of array.
- Parameters:
array – List to process.
- Returns:
First element of list.
Example
>>> head([1, 2, 3, 4]) 1
New in version 1.0.0.
Changed in version Renamed: from
first
tohead
.
- pydash.arrays.index_of(array: Sequence[T], value: T, from_index: int = 0) int [source]#
Gets the index at which the first occurrence of value is found.
- Parameters:
array – List to search.
value – Value to search for.
from_index – Index to search from.
- Returns:
Index of found item or
-1
if not found.
Example
>>> index_of([1, 2, 3, 4], 2) 1 >>> index_of([2, 1, 2, 3], 2, from_index=1) 2
New in version 1.0.0.
- pydash.arrays.initial(array: Sequence[T]) Sequence[T] [source]#
Return all but the last element of array.
- Parameters:
array – List to process.
- Returns:
Initial part of array.
Example
>>> initial([1, 2, 3, 4]) [1, 2, 3]
New in version 1.0.0.
- pydash.arrays.intercalate(array: Iterable[Iterable[T]], separator: T2) List[T | T2] [source]#
- pydash.arrays.intercalate(array: Iterable[T], separator: T2) List[T | T2]
Like
intersperse()
for lists of lists but shallowly flattening the result.- Parameters:
array – List to intercalate.
separator – Element to insert.
- Returns:
Intercalated list.
Example
>>> intercalate([1, [2], [3], 4], 'x') [1, 'x', 2, 'x', 3, 'x', 4]
New in version 2.0.0.
- pydash.arrays.interleave(*arrays: Iterable[T]) List[T] [source]#
Merge multiple lists into a single list by inserting the next element of each list by sequential round-robin into the new list.
- Parameters:
arrays – Lists to interleave.
- Returns:
Interleaved list.
Example
>>> interleave([1, 2, 3], [4, 5, 6], [7, 8, 9]) [1, 4, 7, 2, 5, 8, 3, 6, 9]
New in version 2.0.0.
- pydash.arrays.intersection(array: Sequence[T], *others: Iterable[Any]) List[T] [source]#
Computes the intersection of all the passed-in arrays.
- Parameters:
array – The array to find the intersection of.
others – Lists to check for intersection with array.
- Returns:
Intersection of provided lists.
Example
>>> intersection([1, 2, 3], [1, 2, 3, 4, 5], [2, 3]) [2, 3]
>>> intersection([1, 2, 3]) [1, 2, 3]
New in version 1.0.0.
Changed in version 4.0.0: Support finding intersection of unhashable types.
- pydash.arrays.intersection_by(array: Sequence[T], *others: Iterable[Any], iteratee: Callable[[T], Any] | int | str | List | Tuple | Dict) List[T] [source]#
- pydash.arrays.intersection_by(array: Sequence[T], *others: Iterable[Any] | Callable[[T], Any] | int | str | List | Tuple | Dict) List[T]
This method is like
intersection()
except that it accepts an iteratee which is invoked for each element of each array to generate the criterion by which they’re compared. The order and references of result values are determined by array. The iteratee is invoked with one argument:(value)
.- Parameters:
array – The array to find the intersection of.
others – Lists to check for intersection with array.
- Keyword Arguments:
iteratee – Function to transform the elements of the arrays. Defaults to
identity()
.- Returns:
Intersection of provided lists.
Example
>>> intersection_by([1.2, 1.5, 1.7, 2.8], [0.9, 3.2], round) [1.2, 2.8]
New in version 4.0.0.
- pydash.arrays.intersection_with(array: Sequence[T], *others: Iterable[T2], comparator: Callable[[T, T2], Any]) List[T] [source]#
- pydash.arrays.intersection_with(array: Sequence[T], *others: Iterable[T2] | Callable[[T, T2], Any]) List[T]
This method is like
intersection()
except that it accepts a comparator which is invoked to compare the elements of all arrays. The order and references of result values are determined by the first array. The comparator is invoked with two arguments:(arr_val, oth_val)
.- Parameters:
array – The array to find the intersection of.
others – Lists to check for intersection with array.
- Keyword Arguments:
comparator – Function to compare the elements of the arrays. Defaults to
is_equal()
.- Returns:
Intersection of provided lists.
Example
>>> array = ['apple', 'banana', 'pear'] >>> others = (['avocado', 'pumpkin'], ['peach']) >>> comparator = lambda a, b: a[0] == b[0] >>> intersection_with(array, *others, comparator=comparator) ['pear']
New in version 4.0.0.
- pydash.arrays.intersperse(array: Iterable[T], separator: T2) List[T | T2] [source]#
Insert a separating element between the elements of array.
- Parameters:
array – List to intersperse.
separator – Element to insert.
- Returns:
Interspersed list.
Example
>>> intersperse([1, [2], [3], 4], 'x') [1, 'x', [2], 'x', [3], 'x', 4]
New in version 2.0.0.
- pydash.arrays.last(array: Sequence[T]) T | None [source]#
Return the last element of array.
- Parameters:
array – List to process.
- Returns:
Last part of array.
Example
>>> last([1, 2, 3, 4]) 4
New in version 1.0.0.
- pydash.arrays.last_index_of(array: Sequence[Any], value: Any, from_index: int | None = None) int [source]#
Gets the index at which the last occurrence of value is found.
- Parameters:
array – List to search.
value – Value to search for.
from_index – Index to search from.
- Returns:
Index of found item or
-1
if not found.
Example
>>> last_index_of([1, 2, 2, 4], 2) 2 >>> last_index_of([1, 2, 2, 4], 2, from_index=1) 1
New in version 1.0.0.
- pydash.arrays.mapcat(array: Iterable[T], iteratee: Callable[[T, int, List[T]], List[T2] | List[List[T2]]]) List[T2] [source]#
- pydash.arrays.mapcat(array: Iterable[T], iteratee: Callable[[T, int, List[T]], T2]) List[T2]
- pydash.arrays.mapcat(array: Iterable[T], iteratee: Callable[[T, int], List[T2] | List[List[T2]]]) List[T2]
- pydash.arrays.mapcat(array: Iterable[T], iteratee: Callable[[T, int], T2]) List[T2]
- pydash.arrays.mapcat(array: Iterable[T], iteratee: Callable[[T], List[T2] | List[List[T2]]]) List[T2]
- pydash.arrays.mapcat(array: Iterable[T], iteratee: Callable[[T], T2]) List[T2]
- pydash.arrays.mapcat(array: Iterable[List[T] | List[List[T]]], iteratee: None = None) List[T | List[T]]
Map an iteratee to each element of a list and concatenate the results into a single list using
concat()
.- Parameters:
array – List to map and concatenate.
iteratee – Iteratee to apply to each element.
- Returns:
Mapped and concatenated list.
Example
>>> mapcat(range(4), lambda x: list(range(x))) [0, 0, 1, 0, 1, 2]
New in version 2.0.0.
- pydash.arrays.nth(array: Iterable[T], pos: int = 0) T | None [source]#
Gets the element at index n of array.
- Parameters:
array – List passed in by the user.
pos – Index of element to return.
- Returns:
Returns the element at
pos
.
Example
>>> nth([1, 2, 3], 0) 1 >>> nth([3, 4, 5, 6], 2) 5 >>> nth([11, 22, 33], -1) 33 >>> nth([11, 22, 33]) 11
New in version 4.0.0.
- pydash.arrays.pull(array: List[T], *values: T) List[T] [source]#
Removes all provided values from the given array.
- Parameters:
array – List to pull from.
values – Values to remove.
- Returns:
Modified array.
Warning
array is modified in place.
Example
>>> pull([1, 2, 2, 3, 3, 4], 2, 3) [1, 4]
New in version 1.0.0.
Changed in version 4.0.0:
pull()
method now callspull_all()
method for the desired functionality.
- pydash.arrays.pull_all(array: List[T], values: Iterable[T]) List[T] [source]#
Removes all provided values from the given array.
- Parameters:
array – Array to modify.
values – Values to remove.
- Returns:
Modified array.
Example
>>> pull_all([1, 2, 2, 3, 3, 4], [2, 3]) [1, 4]
New in version 4.0.0.
- pydash.arrays.pull_all_by(array: List[T], values: Iterable[T], iteratee: int | str | List | Tuple | Dict | Callable[[T], Any] | None = None) List[T] [source]#
This method is like
pull_all()
except that it accepts iteratee which is invoked for each element of array and values to generate the criterion by which they’re compared. The iteratee is invoked with one argument:(value)
.- Parameters:
array – Array to modify.
values – Values to remove.
iteratee – Function to transform the elements of the arrays. Defaults to
identity()
.
- Returns:
Modified array.
Example
>>> array = [{'x': 1}, {'x': 2}, {'x': 3}, {'x': 1}] >>> pull_all_by(array, [{'x': 1}, {'x': 3}], 'x') [{'x': 2}]
New in version 4.0.0.
- pydash.arrays.pull_all_with(array: List[T], values: Iterable[T], comparator: Callable[[T, T], Any] | None = None) List[T] [source]#
This method is like
pull_all()
except that it accepts comparator which is invoked to compare elements of array to values. The comparator is invoked with two arguments:(arr_val, oth_val)
.- Parameters:
array – Array to modify.
values – Values to remove.
comparator – Function to compare the elements of the arrays. Defaults to
is_equal()
.
- Returns:
Modified array.
Example
>>> array = [{'x': 1, 'y': 2}, {'x': 3, 'y': 4}, {'x': 5, 'y': 6}] >>> res = pull_all_with(array, [{'x': 3, 'y': 4}], lambda a, b: a == b) >>> res == [{'x': 1, 'y': 2}, {'x': 5, 'y': 6}] True >>> array = [{'x': 1, 'y': 2}, {'x': 3, 'y': 4}, {'x': 5, 'y': 6}] >>> res = pull_all_with(array, [{'x': 3, 'y': 4}], lambda a, b: a != b) >>> res == [{'x': 3, 'y': 4}] True
New in version 4.0.0.
- pydash.arrays.pull_at(array: List[T], *indexes: int) List[T] [source]#
Removes elements from array corresponding to the specified indexes and returns a list of the removed elements. Indexes may be specified as a list of indexes or as individual arguments.
- Parameters:
array – List to pull from.
indexes – Indexes to pull.
- Returns:
Modified array.
Warning
array is modified in place.
Example
>>> pull_at([1, 2, 3, 4], 0, 2) [2, 4]
New in version 1.1.0.
- pydash.arrays.push(array: List[T], *items: T2) List[T | T2] [source]#
Push items onto the end of array and return modified array.
- Parameters:
array – List to push to.
items – Items to append.
- Returns:
Modified array.
Warning
array is modified in place.
Example
>>> array = [1, 2, 3] >>> push(array, 4, 5, [6]) [1, 2, 3, 4, 5, [6]]
New in version 2.2.0.
Changed in version 4.0.0: Removed alias
append
.
- pydash.arrays.remove(array: List[T], predicate: Callable[[T, int, List[T]], Any] | Callable[[T, int], Any] | Callable[[T], Any] | None = None) List[T] [source]#
Removes all elements from a list that the predicate returns truthy for and returns an array of removed elements.
- Parameters:
array – List to remove elements from.
predicate – Predicate applied per iteration.
- Returns:
Removed elements of array.
Warning
array is modified in place.
Example
>>> array = [1, 2, 3, 4] >>> items = remove(array, lambda x: x >= 3) >>> items [3, 4] >>> array [1, 2]
New in version 1.0.0.
- pydash.arrays.reverse(array: SequenceT) SequenceT [source]#
Return array in reverse order.
- Parameters:
array – Object to process.
- Returns:
Reverse of object.
Example
>>> reverse([1, 2, 3, 4]) [4, 3, 2, 1]
New in version 2.2.0.
- pydash.arrays.shift(array: List[T]) T [source]#
Remove the first element of array and return it.
- Parameters:
array – List to shift.
- Returns:
First element of array.
Warning
array is modified in place.
Example
>>> array = [1, 2, 3, 4] >>> item = shift(array) >>> item 1 >>> array [2, 3, 4]
New in version 2.2.0.
- pydash.arrays.slice_(array: SequenceT, start: int = 0, end: int | None = None) SequenceT [source]#
Slices array from the start index up to, but not including, the end index.
- Parameters:
array – Array to slice.
start – Start index. Defaults to
0
.end – End index. Defaults to selecting the value at
start
index.
- Returns:
Sliced list.
Example
>>> slice_([1, 2, 3, 4]) [1] >>> slice_([1, 2, 3, 4], 1) [2] >>> slice_([1, 2, 3, 4], 1, 3) [2, 3]
New in version 1.1.0.
- pydash.arrays.sort(array: t.List['SupportsRichComparisonT'], comparator: None = None, key: None = None, reverse: bool = False) t.List['SupportsRichComparisonT'] [source]#
- pydash.arrays.sort(array: List[T], comparator: Callable[[T, T], int], *, reverse: bool = False) List[T]
- pydash.arrays.sort(array: List[T], *, key: t.Callable[[T], 'SupportsRichComparisonT'], reverse: bool = False) List[T]
Sort array using optional comparator, key, and reverse options and return sorted array.
Note
Python 3 removed the option to pass a custom comparator function and instead only allows a key function. Therefore, if a comparator function is passed in, it will be converted to a key function automatically using
functools.cmp_to_key
.- Parameters:
array – List to sort.
comparator – A custom comparator function used to sort the list. Function should accept two arguments and return a negative, zero, or position number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument. Defaults to
None
. This argument is mutually exclusive with key.key – A function of one argument used to extract a comparator key from each list element. Defaults to
None
. This argument is mutually exclusive with comparator.reverse – Whether to reverse the sort. Defaults to
False
.
- Returns:
Sorted list.
Warning
array is modified in place.
Example
>>> sort([2, 1, 4, 3]) [1, 2, 3, 4] >>> sort([2, 1, 4, 3], reverse=True) [4, 3, 2, 1] >>> results = sort([{'a': 2, 'b': 1}, {'a': 3, 'b': 2}, {'a': 0, 'b': 3}], key=lambda item: item['a']) >>> assert results == [{'a': 0, 'b': 3}, {'a': 2, 'b': 1}, {'a': 3, 'b': 2}]
New in version 2.2.0.
- pydash.arrays.sorted_index(array: Sequence[SupportsRichComparisonT], value: SupportsRichComparisonT) int [source]#
Uses a binary search to determine the lowest index at which value should be inserted into array in order to maintain its sort order.
- Parameters:
array – List to inspect.
value – Value to evaluate.
- Returns:
Returns the index at which value should be inserted into array.
Example
>>> sorted_index([1, 2, 2, 3, 4], 2) 1
New in version 1.0.0.
Changed in version 4.0.0: Move iteratee support to
sorted_index_by()
.
- pydash.arrays.sorted_index_by(array: Sequence[T], value: T, iteratee: t.Union[IterateeObjT, t.Callable[[T], 'SupportsRichComparisonT']]) int [source]#
- pydash.arrays.sorted_index_by(array: t.Sequence['SupportsRichComparisonT'], value: SupportsRichComparisonT, iteratee: None = None) int
This method is like
sorted_index()
except that it accepts iteratee which is invoked for value and each element of array to compute their sort ranking. The iteratee is invoked with one argument:(value)
.- Parameters:
array – List to inspect.
value – Value to evaluate.
iteratee – The iteratee invoked per element. Defaults to
identity()
.
- Returns:
Returns the index at which value should be inserted into array.
Example
>>> array = [{'x': 4}, {'x': 5}] >>> sorted_index_by(array, {'x': 4}, lambda o: o['x']) 0 >>> sorted_index_by(array, {'x': 4}, 'x') 0
New in version 4.0.0.
- pydash.arrays.sorted_index_of(array: Sequence[SupportsRichComparisonT], value: SupportsRichComparisonT) int [source]#
Returns the index of the matched value from the sorted array, else
-1
.- Parameters:
array – Array to inspect.
value – Value to search for.
- Returns:
Returns the index of the first matched value, else
-1
.
Example
>>> sorted_index_of([3, 5, 7, 10], 3) 0 >>> sorted_index_of([10, 10, 5, 7, 3], 10) -1
New in version 4.0.0.
- pydash.arrays.sorted_last_index(array: Sequence[SupportsRichComparisonT], value: SupportsRichComparisonT) int [source]#
This method is like
sorted_index()
except that it returns the highest index at which value should be inserted into array in order to maintain its sort order.- Parameters:
array – List to inspect.
value – Value to evaluate.
- Returns:
Returns the index at which value should be inserted into array.
Example
>>> sorted_last_index([1, 2, 2, 3, 4], 2) 3
New in version 1.1.0.
Changed in version 4.0.0: Move iteratee support to
sorted_last_index_by()
.
- pydash.arrays.sorted_last_index_by(array: Sequence[T], value: T, iteratee: t.Union[IterateeObjT, t.Callable[[T], 'SupportsRichComparisonT']]) int [source]#
- pydash.arrays.sorted_last_index_by(array: t.Sequence['SupportsRichComparisonT'], value: SupportsRichComparisonT, iteratee: None = None) int
This method is like
sorted_last_index()
except that it accepts iteratee which is invoked for value and each element of array to compute their sort ranking. The iteratee is invoked with one argument:(value)
.- Parameters:
array – List to inspect.
value – Value to evaluate.
iteratee – The iteratee invoked per element. Defaults to
identity()
.
- Returns:
Returns the index at which value should be inserted into array.
Example
>>> array = [{'x': 4}, {'x': 5}] >>> sorted_last_index_by(array, {'x': 4}, lambda o: o['x']) 1 >>> sorted_last_index_by(array, {'x': 4}, 'x') 1
- pydash.arrays.sorted_last_index_of(array: Sequence[SupportsRichComparisonT], value: SupportsRichComparisonT) int [source]#
This method is like
last_index_of()
except that it performs a binary search on a sorted array.- Parameters:
array – Array to inspect.
value – Value to search for.
- Returns:
Returns the index of the matched value, else
-1
.
Example
>>> sorted_last_index_of([4, 5, 5, 5, 6], 5) 3 >>> sorted_last_index_of([6, 5, 5, 5, 4], 6) -1
New in version 4.0.0.
- pydash.arrays.sorted_uniq(array: Iterable[SupportsRichComparisonT]) List[SupportsRichComparisonT] [source]#
Return sorted array with unique elements.
- Parameters:
array – List of values to be sorted.
- Returns:
List of unique elements in a sorted fashion.
Example
>>> sorted_uniq([4, 2, 2, 5]) [2, 4, 5] >>> sorted_uniq([-2, -2, 4, 1]) [-2, 1, 4]
New in version 4.0.0.
- pydash.arrays.sorted_uniq_by(array: Iterable[SupportsRichComparisonT], iteratee: Callable[[SupportsRichComparisonT], SupportsRichComparisonT] | None = None) List[SupportsRichComparisonT] [source]#
This method is like
sorted_uniq()
except that it accepts iteratee which is invoked for each element in array to generate the criterion by which uniqueness is computed. The order of result values is determined by the order they occur in the array. The iteratee is invoked with one argument:(value)
.- Parameters:
array – List of values to be sorted.
iteratee – Function to transform the elements of the arrays. Defaults to
identity()
.
- Returns:
Unique list.
Example
>>> sorted_uniq_by([3, 2, 1, 3, 2, 1], lambda val: val % 2) [2, 3]
New in version 4.0.0.
- pydash.arrays.splice(array: MutableSequenceT, start: int, count: int | None = None, *items: Any) MutableSequenceT [source]#
Modify the contents of array by inserting elements starting at index start and removing count number of elements after.
- Parameters:
array – List to splice.
start – Start to splice at.
count – Number of items to remove starting at start. If
None
then all items after start are removed. Defaults toNone
.items – Elements to insert starting at start. Each item is inserted in the order given.
- Returns:
The removed elements of array or the spliced string.
Warning
array is modified in place if
list
.Example
>>> array = [1, 2, 3, 4] >>> splice(array, 1) [2, 3, 4] >>> array [1] >>> array = [1, 2, 3, 4] >>> splice(array, 1, 2) [2, 3] >>> array [1, 4] >>> array = [1, 2, 3, 4] >>> splice(array, 1, 2, 0, 0) [2, 3] >>> array [1, 0, 0, 4]
New in version 2.2.0.
Changed in version 3.0.0: Support string splicing.
- pydash.arrays.split_at(array: Sequence[T], index: int) List[Sequence[T]] [source]#
Returns a list of two lists composed of the split of array at index.
- Parameters:
array – List to split.
index – Index to split at.
- Returns:
Split list.
Example
>>> split_at([1, 2, 3, 4], 2) [[1, 2], [3, 4]]
New in version 2.0.0.
- pydash.arrays.tail(array: Sequence[T]) Sequence[T] [source]#
Return all but the first element of array.
- Parameters:
array – List to process.
- Returns:
Rest of the list.
Example
>>> tail([1, 2, 3, 4]) [2, 3, 4]
New in version 1.0.0.
Changed in version 4.0.0: Renamed from
rest
totail
.
- pydash.arrays.take(array: Sequence[T], n: int = 1) Sequence[T] [source]#
Creates a slice of array with n elements taken from the beginning.
- Parameters:
array – List to process.
n – Number of elements to take. Defaults to
1
.
- Returns:
Taken list.
Example
>>> take([1, 2, 3, 4], 2) [1, 2]
New in version 1.0.0.
Changed in version 1.1.0: Added
n
argument and removed as alias offirst()
.Changed in version 3.0.0: Made
n
default to1
.
- pydash.arrays.take_right(array: Sequence[T], n: int = 1) Sequence[T] [source]#
Creates a slice of array with n elements taken from the end.
- Parameters:
array – List to process.
n – Number of elements to take. Defaults to
1
.
- Returns:
Taken list.
Example
>>> take_right([1, 2, 3, 4], 2) [3, 4]
New in version 1.1.0.
Changed in version 3.0.0: Made
n
default to1
.
- pydash.arrays.take_right_while(array: Sequence[T], predicate: Callable[[T, int, List[T]], Any]) Sequence[T] [source]#
- pydash.arrays.take_right_while(array: Sequence[T], predicate: Callable[[T, int], Any]) Sequence[T]
- pydash.arrays.take_right_while(array: Sequence[T], predicate: Callable[[T], Any]) Sequence[T]
- pydash.arrays.take_right_while(array: Sequence[T], predicate: None = None) Sequence[T]
Creates a slice of array with elements taken from the end. Elements are taken until the predicate returns falsey. The predicate is invoked with three arguments:
(value, index, array)
.- Parameters:
array – List to process.
predicate – Predicate called per iteration
- Returns:
Dropped list.
Example
>>> take_right_while([1, 2, 3, 4], lambda x: x >= 3) [3, 4]
New in version 1.1.0.
- pydash.arrays.take_while(array: Sequence[T], predicate: Callable[[T, int, List[T]], Any]) List[T] [source]#
- pydash.arrays.take_while(array: Sequence[T], predicate: Callable[[T, int], Any]) List[T]
- pydash.arrays.take_while(array: Sequence[T], predicate: Callable[[T], Any]) List[T]
- pydash.arrays.take_while(array: Sequence[T], predicate: None = None) List[T]
Creates a slice of array with elements taken from the beginning. Elements are taken until the predicate returns falsey. The predicate is invoked with three arguments:
(value, index, array)
.- Parameters:
array – List to process.
predicate – Predicate called per iteration
- Returns:
Taken list.
Example
>>> take_while([1, 2, 3, 4], lambda x: x < 3) [1, 2]
New in version 1.1.0.
- pydash.arrays.union(array: Sequence[T]) List[T] [source]#
- pydash.arrays.union(array: Sequence[T], *others: Sequence[T2]) List[T | T2]
Computes the union of the passed-in arrays.
- Parameters:
array – List to union with.
others – Lists to unionize with array.
- Returns:
Unionized list.
Example
>>> union([1, 2, 3], [2, 3, 4], [3, 4, 5]) [1, 2, 3, 4, 5]
New in version 1.0.0.
- pydash.arrays.union_by(array: Sequence[T], *others: Iterable[T], iteratee: Callable[[T], Any]) List[T] [source]#
- pydash.arrays.union_by(array: Sequence[T], *others: Iterable[T] | Callable[[T], Any]) List[T]
This method is similar to
union()
except that it accepts iteratee which is invoked for each element of each array to generate the criterion by which uniqueness is computed.- Parameters:
array – List to unionize with.
others – Lists to unionize with array.
- Keyword Arguments:
iteratee – Function to invoke on each element.
- Returns:
Unionized list.
Example
>>> union_by([1, 2, 3], [2, 3, 4], iteratee=lambda x: x % 2) [1, 2] >>> union_by([1, 2, 3], [2, 3, 4], iteratee=lambda x: x % 9) [1, 2, 3, 4]
New in version 4.0.0.
- pydash.arrays.union_with(array: Sequence[T], *others: Iterable[T2], comparator: Callable[[T, T2], Any]) List[T] [source]#
- pydash.arrays.union_with(array: Sequence[T], *others: Iterable[T2] | Callable[[T, T2], Any]) List[T]
This method is like
union()
except that it accepts comparator which is invoked to compare elements of arrays. Result values are chosen from the first array in which the value occurs.- Parameters:
array – List to unionize with.
others – Lists to unionize with array.
- Keyword Arguments:
comparator – Function to compare the elements of the arrays. Defaults to
is_equal()
.- Returns:
Unionized list.
Example
>>> comparator = lambda a, b: (a % 2) == (b % 2) >>> union_with([1, 2, 3], [2, 3, 4], comparator=comparator) [1, 2] >>> union_with([1, 2, 3], [2, 3, 4]) [1, 2, 3, 4]
New in version 4.0.0.
- pydash.arrays.uniq(array: Iterable[T]) List[T] [source]#
Creates a duplicate-value-free version of the array. If iteratee is passed, each element of array is passed through an iteratee before uniqueness is computed. The iteratee is invoked with three arguments:
(value, index, array)
. If an object path is passed for iteratee, the created iteratee will return the path value of the given element. If an object is passed for iteratee, the created filter style iteratee will returnTrue
for elements that have the properties of the given object, elseFalse
.- Parameters:
array – List to process.
- Returns:
Unique list.
Example
>>> uniq([1, 2, 3, 1, 2, 3]) [1, 2, 3]
New in version 1.0.0.
Changed in version 4.0.0:
Moved iteratee argument to
uniq_by()
.Removed alias
unique
.
- pydash.arrays.uniq_by(array: Iterable[T], iteratee: Callable[[T], Any] | None = None) List[T] [source]#
This method is like
uniq()
except that it accepts iteratee which is invoked for each element in array to generate the criterion by which uniqueness is computed. The order of result values is determined by the order they occur in the array. The iteratee is invoked with one argument:(value)
.- Parameters:
array – List to process.
iteratee – Function to transform the elements of the arrays. Defaults to
identity()
.
- Returns:
Unique list.
Example
>>> uniq_by([1, 2, 3, 1, 2, 3], lambda val: val % 2) [1, 2]
New in version 4.0.0.
- pydash.arrays.uniq_with(array: Sequence[T], comparator: Callable[[T, T], Any] | None = None) List[T] [source]#
This method is like
uniq()
except that it accepts comparator which is invoked to compare elements of array. The order of result values is determined by the order they occur in the array.The comparator is invoked with two arguments:(value, other)
.- Parameters:
array – List to process.
comparator – Function to compare the elements of the arrays. Defaults to
is_equal()
.
- Returns:
Unique list.
Example
>>> uniq_with([1, 2, 3, 4, 5], lambda a, b: (a % 2) == (b % 2)) [1, 2]
New in version 4.0.0.
- pydash.arrays.unshift(array: List[T], *items: T2) List[T | T2] [source]#
Insert the given elements at the beginning of array and return the modified list.
- Parameters:
array – List to modify.
items – Items to insert.
- Returns:
Modified list.
Warning
array is modified in place.
Example
>>> array = [1, 2, 3, 4] >>> unshift(array, -1, -2) [-1, -2, 1, 2, 3, 4] >>> array [-1, -2, 1, 2, 3, 4]
New in version 2.2.0.
- pydash.arrays.unzip(array: Iterable[Iterable[T]]) List[List[T]] [source]#
The inverse of
zip_()
, this method splits groups of elements into lists composed of elements from each group at their corresponding indexes.- Parameters:
array – List to process.
- Returns:
Unzipped list.
Example
>>> unzip([[1, 4, 7], [2, 5, 8], [3, 6, 9]]) [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
New in version 1.0.0.
- pydash.arrays.unzip_with(array: Iterable[Iterable[T]], iteratee: Callable[[T, T, int, List[T]], T2] | Callable[[T, T, int], T2] | Callable[[T, T], T2] | Callable[[T], T2]) List[T2] [source]#
- pydash.arrays.unzip_with(array: Iterable[Iterable[T]], iteratee: None = None) List[List[T]]
This method is like
unzip()
except that it accepts an iteratee to specify how regrouped values should be combined. The iteratee is invoked with four arguments:(accumulator, value, index, group)
.- Parameters:
array – List to process.
iteratee – Function to combine regrouped values.
- Returns:
Unzipped list.
Example
>>> from pydash import add >>> unzip_with([[1, 10, 100], [2, 20, 200]], add) [3, 30, 300]
New in version 3.3.0.
- pydash.arrays.without(array: Iterable[T], *values: T) List[T] [source]#
Creates an array with all occurrences of the passed values removed.
- Parameters:
array – List to filter.
values – Values to remove.
- Returns:
Filtered list.
Example
>>> without([1, 2, 3, 2, 4, 4], 2, 4) [1, 3]
New in version 1.0.0.
- pydash.arrays.xor(array: Iterable[T], *lists: Iterable[T]) List[T] [source]#
Creates a list that is the symmetric difference of the provided lists.
- Parameters:
array – List to process.
*lists – Lists to xor with.
- Returns:
XOR’d list.
Example
>>> xor([1, 3, 4], [1, 2, 4], [2]) [3]
New in version 1.0.0.
- pydash.arrays.xor_by(array: Iterable[T], *lists: Iterable[T], iteratee: Callable[[T], Any] | int | str | List | Tuple | Dict) List[T] [source]#
- pydash.arrays.xor_by(array: Iterable[T], *lists: Iterable[T] | Callable[[T], Any]) List[T]
This method is like
xor()
except that it accepts iteratee which is invoked for each element of each arras to generate the criterion by which they’re compared. The order of result values is determined by the order they occur in the arrays. The iteratee is invoked with one argument:(value)
.- Parameters:
array – List to process.
*lists – Lists to xor with.
- Keyword Arguments:
iteratee – Function to transform the elements of the arrays. Defaults to
identity()
.- Returns:
XOR’d list.
Example
>>> xor_by([2.1, 1.2], [2.3, 3.4], round) [1.2, 3.4] >>> xor_by([{'x': 1}], [{'x': 2}, {'x': 1}], 'x') [{'x': 2}]
New in version 4.0.0.
- pydash.arrays.xor_with(array: Sequence[T], *lists: Iterable[T2], comparator: Callable[[T, T2], Any]) List[T] [source]#
- pydash.arrays.xor_with(array: Sequence[T], *lists: Iterable[T2] | Callable[[T, T2], Any]) List[T]
This method is like
xor()
except that it accepts comparator which is invoked to compare elements of arrays. The order of result values is determined by the order they occur in the arrays. The comparator is invoked with two arguments:(arr_val, oth_val)
.- Parameters:
array – List to process.
*lists – Lists to xor with.
- Keyword Arguments:
comparator – Function to compare the elements of the arrays. Defaults to
is_equal()
.- Returns:
XOR’d list.
Example
>>> objects = [{'x': 1, 'y': 2}, {'x': 2, 'y': 1}] >>> others = [{'x': 1, 'y': 1}, {'x': 1, 'y': 2}] >>> expected = [{'y': 1, 'x': 2}, {'y': 1, 'x': 1}] >>> xor_with(objects, others, lambda a, b: a == b) == expected True
New in version 4.0.0.
- pydash.arrays.zip_(*arrays: Iterable[T]) List[List[T]] [source]#
Groups the elements of each array at their corresponding indexes. Useful for separate data sources that are coordinated through matching array indexes.
- Parameters:
arrays – Lists to process.
- Returns:
Zipped list.
Example
>>> zip_([1, 2, 3], [4, 5, 6], [7, 8, 9]) [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
New in version 1.0.0.
- pydash.arrays.zip_object(keys: Iterable[Tuple[T, T2]], values: None = None) Dict[T, T2] [source]#
- pydash.arrays.zip_object(keys: Iterable[List[T | T2]], values: None = None) Dict[T | T2, T | T2]
- pydash.arrays.zip_object(keys: Iterable[T], values: List[T2]) Dict[T, T2]
Creates a dict composed of lists of keys and values. Pass either a single two-dimensional list, i.e.
[[key1, value1], [key2, value2]]
, or two lists, one of keys and one of corresponding values.- Parameters:
keys – Either a list of keys or a list of
[key, value]
pairs.values – List of values to zip.
- Returns:
Zipped dict.
Example
>>> zip_object([1, 2, 3], [4, 5, 6]) {1: 4, 2: 5, 3: 6}
New in version 1.0.0.
Changed in version 4.0.0: Removed alias
object_
.
- pydash.arrays.zip_object_deep(keys: Iterable[Any], values: List[Any] | None = None) Dict [source]#
This method is like
zip_object()
except that it supports property paths.- Parameters:
keys – Either a list of keys or a list of
[key, value]
pairs.values – List of values to zip.
- Returns:
Zipped dict.
Example
>>> expected = {'a': {'b': {'c': 1, 'd': 2}}} >>> zip_object_deep(['a.b.c', 'a.b.d'], [1, 2]) == expected True
New in version 4.0.0.
- pydash.arrays.zip_with(*arrays: Iterable[T], iteratee: Callable[[T, T, int, List[T]], T2] | Callable[[T, T, int], T2] | Callable[[T, T], T2] | Callable[[T], T2]) List[T2] [source]#
- pydash.arrays.zip_with(*arrays: Iterable[T]) List[List[T]]
- pydash.arrays.zip_with(*arrays: Iterable[T] | Callable[[T, T, int, List[T]], T2] | Callable[[T, T, int], T2] | Callable[[T, T], T2] | Callable[[T], T2]) List[List[T] | T2]
This method is like
zip()
except that it accepts an iteratee to specify how grouped values should be combined. The iteratee is invoked with four arguments:(accumulator, value, index, group)
.- Parameters:
*arrays – Lists to process.
- Keyword Arguments:
iteratee (callable) – Function to combine grouped values.
- Returns:
Zipped list of grouped elements.
Example
>>> from pydash import add >>> zip_with([1, 2], [10, 20], [100, 200], add) [111, 222] >>> zip_with([1, 2], [10, 20], [100, 200], iteratee=add) [111, 222]
New in version 3.3.0.
Chaining#
- pydash.chaining.chain(value: ~pydash.chaining.chaining.T | ~pydash.helpers.Unset = <pydash.helpers.Unset object>) Chain[T] [source]#
Creates a
Chain
object which wraps the given value to enable intuitive method chaining. Chaining is lazy and won’t compute a final value untilChain.value()
is called.- Parameters:
value – Value to initialize chain operations with.
- Returns:
Instance of
Chain
initialized with value.
Example
>>> chain([1, 2, 3, 4]).map(lambda x: x * 2).sum().value() 20 >>> chain().map(lambda x: x * 2).sum()([1, 2, 3, 4]) 20
>>> summer = chain([1, 2, 3, 4]).sum() >>> new_summer = summer.plant([1, 2]) >>> new_summer.value() 3 >>> summer.value() 10
>>> def echo(item): print(item) >>> summer = chain([1, 2, 3, 4]).for_each(echo).sum() >>> committed = summer.commit() 1 2 3 4 >>> committed.value() 10 >>> summer.value() 1 2 3 4 10
New in version 1.0.0.
Changed in version 2.0.0: Made chaining lazy.
Changed in version 3.0.0:
Added support for late passing of value.
Added
Chain.plant()
for replacing initial chain value.Added
Chain.commit()
for returning a newChain
instance initialized with the results from callingChain.value()
.
- pydash.chaining.tap(value: T, interceptor: Callable[[T], Any]) T [source]#
Invokes interceptor with the value as the first argument and then returns value. The purpose of this method is to “tap into” a method chain in order to perform operations on intermediate results within the chain.
- Parameters:
value – Current value of chain operation.
interceptor – Function called on value.
- Returns:
value after interceptor call.
Example
>>> data = [] >>> def log(value): data.append(value) >>> chain([1, 2, 3, 4]).map(lambda x: x * 2).tap(log).value() [2, 4, 6, 8] >>> data [[2, 4, 6, 8]]
New in version 1.0.0.
- pydash.chaining.thru(value: T, interceptor: Callable[[T], T2]) T2 [source]#
Returns the result of calling interceptor on value. The purpose of this method is to pass value through a function during a method chain.
- Parameters:
value – Current value of chain operation.
interceptor – Function called with value.
- Returns:
Results of
interceptor(value)
.
Example
>>> chain([1, 2, 3, 4]).thru(lambda x: x * 2).value() [1, 2, 3, 4, 1, 2, 3, 4]
New in version 2.0.0.
Collections#
Functions that operate on lists and dicts.
New in version 1.0.0.
- pydash.collections.at(collection: Mapping[T, T2], *paths: T) List[T2 | None] [source]#
- pydash.collections.at(collection: Mapping[T, Any], *paths: T | Iterable[T]) List[Any]
- pydash.collections.at(collection: Iterable[T], *paths: int) List[T | None]
- pydash.collections.at(collection: Iterable[Any], *paths: int | Iterable[int]) List[Any]
Creates a list of elements from the specified indexes, or keys, of the collection. Indexes may be specified as individual arguments or as arrays of indexes.
- Parameters:
collection – Collection to iterate over.
*paths – The indexes of collection to retrieve, specified as individual indexes or arrays of indexes.
- Returns:
filtered list
Example
>>> at([1, 2, 3, 4], 0, 2) [1, 3] >>> at({'a': 1, 'b': 2, 'c': 3, 'd': 4}, 'a', 'c') [1, 3] >>> at({'a': 1, 'b': 2, 'c': {'d': {'e': 3}}}, 'a', ['c', 'd', 'e']) [1, 3]
New in version 1.0.0.
Changed in version 4.1.0: Support deep path access.
- pydash.collections.count_by(collection: Mapping[Any, T2], iteratee: None = None) Dict[T2, int] [source]#
- pydash.collections.count_by(collection: Mapping[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], T3]) Dict[T3, int]
- pydash.collections.count_by(collection: Mapping[T, T2], iteratee: Callable[[T2, T], T3]) Dict[T3, int]
- pydash.collections.count_by(collection: Mapping[Any, T2], iteratee: Callable[[T2], T3]) Dict[T3, int]
- pydash.collections.count_by(collection: Iterable[T], iteratee: None = None) Dict[T, int]
- pydash.collections.count_by(collection: Iterable[T], iteratee: Callable[[T, int, List[T]], T2]) Dict[T2, int]
- pydash.collections.count_by(collection: Iterable[T], iteratee: Callable[[T, int], T2]) Dict[T2, int]
- pydash.collections.count_by(collection: Iterable[T], iteratee: Callable[[T], T2]) Dict[T2, int]
Creates an object composed of keys generated from the results of running each element of collection through the iteratee.
- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
- Returns:
Dict containing counts by key.
Example
>>> results = count_by([1, 2, 1, 2, 3, 4]) >>> assert results == {1: 2, 2: 2, 3: 1, 4: 1} >>> results = count_by(['a', 'A', 'B', 'b'], lambda x: x.lower()) >>> assert results == {'a': 2, 'b': 2} >>> results = count_by({'a': 1, 'b': 1, 'c': 3, 'd': 3}) >>> assert results == {1: 2, 3: 2}
New in version 1.0.0.
- pydash.collections.every(collection: Iterable[T], predicate: Callable[[T], Any] | int | str | List | Tuple | Dict | None = None) bool [source]#
Checks if the predicate returns a truthy value for all elements of a collection. The predicate is invoked with three arguments:
(value, index|key, collection)
. If a property name is passed for predicate, the createdpluck()
style predicate will return the property value of the given element. If an object is passed for predicate, the createdmatches()
style predicate will returnTrue
for elements that have the properties of the given object, elseFalse
.- Parameters:
collection – Collection to iterate over.
predicate – Predicate applied per iteration.
- Returns:
Whether all elements are truthy.
Example
>>> every([1, True, 'hello']) True >>> every([1, False, 'hello']) False >>> every([{'a': 1}, {'a': True}, {'a': 'hello'}], 'a') True >>> every([{'a': 1}, {'a': False}, {'a': 'hello'}], 'a') False >>> every([{'a': 1}, {'a': 1}], {'a': 1}) True >>> every([{'a': 1}, {'a': 2}], {'a': 1}) False
New in version 1.0.0.
- pydash.collections.filter_(collection: Mapping[T, T2], predicate: Callable[[T2, T, Dict[T, T2]], Any] | int | str | List | Tuple | Dict | None = None) List[T2] [source]#
- pydash.collections.filter_(collection: Mapping[T, T2], predicate: Callable[[T2, T], Any] | int | str | List | Tuple | Dict | None = None) List[T2]
- pydash.collections.filter_(collection: Mapping[Any, T2], predicate: Callable[[T2], Any] | int | str | List | Tuple | Dict | None = None) List[T2]
- pydash.collections.filter_(collection: Iterable[T], predicate: Callable[[T, int, List[T]], Any] | int | str | List | Tuple | Dict | None = None) List[T]
- pydash.collections.filter_(collection: Iterable[T], predicate: Callable[[T, int], Any] | int | str | List | Tuple | Dict | None = None) List[T]
- pydash.collections.filter_(collection: Iterable[T], predicate: Callable[[T], Any] | int | str | List | Tuple | Dict | None = None) List[T]
Iterates over elements of a collection, returning a list of all elements the predicate returns truthy for.
- Parameters:
collection – Collection to iterate over.
predicate – Predicate applied per iteration.
- Returns:
Filtered list.
Example
>>> results = filter_([{'a': 1}, {'b': 2}, {'a': 1, 'b': 3}], {'a': 1}) >>> assert results == [{'a': 1}, {'a': 1, 'b': 3}] >>> filter_([1, 2, 3, 4], lambda x: x >= 3) [3, 4]
New in version 1.0.0.
Changed in version 4.0.0: Removed alias
select
.
- pydash.collections.find(collection: Dict[T, T2], predicate: Callable[[T2, T, Dict[T, T2]], Any] | int | str | List | Tuple | Dict | None = None) T2 | None [source]#
- pydash.collections.find(collection: Dict[T, T2], predicate: Callable[[T2, T], Any] | int | str | List | Tuple | Dict | None = None) T2 | None
- pydash.collections.find(collection: Dict[T, T2], predicate: Callable[[T2], Any] | int | str | List | Tuple | Dict | None = None) T2 | None
- pydash.collections.find(collection: List[T], predicate: Callable[[T, int, List[T]], Any] | int | str | List | Tuple | Dict | None = None) T | None
- pydash.collections.find(collection: List[T], predicate: Callable[[T, int], Any] | int | str | List | Tuple | Dict | None = None) T | None
- pydash.collections.find(collection: List[T], predicate: Callable[[T], Any] | int | str | List | Tuple | Dict | None = None) T | None
Iterates over elements of a collection, returning the first element that the predicate returns truthy for.
- Parameters:
collection – Collection to iterate over.
predicate – Predicate applied per iteration.
- Returns:
First element found or
None
.
Example
>>> find([1, 2, 3, 4], lambda x: x >= 3) 3 >>> find([{'a': 1}, {'b': 2}, {'a': 1, 'b': 2}], {'a': 1}) {'a': 1}
New in version 1.0.0.
Changed in version 4.0.0: Removed aliases
detect
andfind_where
.
- pydash.collections.find_last(collection: Dict[T, T2], predicate: Callable[[T2, T, Dict[T, T2]], Any] | int | str | List | Tuple | Dict | None = None) T2 | None [source]#
- pydash.collections.find_last(collection: Dict[T, T2], predicate: Callable[[T2, T], Any] | int | str | List | Tuple | Dict | None = None) T2 | None
- pydash.collections.find_last(collection: Dict[Any, T2], predicate: Callable[[T2], Any] | int | str | List | Tuple | Dict | None = None) T2 | None
- pydash.collections.find_last(collection: List[T], predicate: Callable[[T, int, List[T]], Any] | int | str | List | Tuple | Dict | None = None) T | None
- pydash.collections.find_last(collection: List[T], predicate: Callable[[T, int], Any] | int | str | List | Tuple | Dict | None = None) T | None
- pydash.collections.find_last(collection: List[T], predicate: Callable[[T], Any] | int | str | List | Tuple | Dict | None = None) T | None
This method is like
find()
except that it iterates over elements of a collection from right to left.- Parameters:
collection – Collection to iterate over.
predicate – Predicate applied per iteration.
- Returns:
Last element found or
None
.
Example
>>> find_last([1, 2, 3, 4], lambda x: x >= 3) 4 >>> results = find_last([{'a': 1}, {'b': 2}, {'a': 1, 'b': 2}], {'a': 1}) >>> assert results == {'a': 1, 'b': 2}
New in version 1.0.0.
- pydash.collections.flat_map(collection: Mapping[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], Iterable[T3]]) List[T3] [source]#
- pydash.collections.flat_map(collection: Mapping[T, T2], iteratee: Callable[[T2, T], Iterable[T3]]) List[T3]
- pydash.collections.flat_map(collection: Mapping[Any, T2], iteratee: Callable[[T2], Iterable[T3]]) List[T3]
- pydash.collections.flat_map(collection: Mapping[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], T3]) List[T3]
- pydash.collections.flat_map(collection: Mapping[T, T2], iteratee: Callable[[T2, T], T3]) List[T3]
- pydash.collections.flat_map(collection: Mapping[Any, T2], iteratee: Callable[[T2], T3]) List[T3]
- pydash.collections.flat_map(collection: Mapping[Any, Iterable[T2]], iteratee: None = None) List[T2]
- pydash.collections.flat_map(collection: Mapping[Any, T2], iteratee: None = None) List[T2]
- pydash.collections.flat_map(collection: Iterable[T], iteratee: Callable[[T, int, List[T]], Iterable[T2]]) List[T2]
- pydash.collections.flat_map(collection: Iterable[T], iteratee: Callable[[T, int], Iterable[T2]]) List[T2]
- pydash.collections.flat_map(collection: Iterable[T], iteratee: Callable[[T], Iterable[T2]]) List[T2]
- pydash.collections.flat_map(collection: Iterable[T], iteratee: Callable[[T, int, List[T]], T2]) List[T2]
- pydash.collections.flat_map(collection: Iterable[T], iteratee: Callable[[T, int], T2]) List[T2]
- pydash.collections.flat_map(collection: Iterable[T], iteratee: Callable[[T], T2]) List[T2]
- pydash.collections.flat_map(collection: Iterable[Iterable[T]], iteratee: None = None) List[T]
- pydash.collections.flat_map(collection: Iterable[T], iteratee: None = None) List[T]
Creates a flattened list of values by running each element in collection through iteratee and flattening the mapped results. The iteratee is invoked with three arguments:
(value, index|key, collection)
.- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
- Returns:
Flattened mapped list.
Example
>>> duplicate = lambda n: [[n, n]] >>> flat_map([1, 2], duplicate) [[1, 1], [2, 2]]
New in version 4.0.0.
- pydash.collections.flat_map_deep(collection: Mapping[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], Any] | None = None) List [source]#
- pydash.collections.flat_map_deep(collection: Mapping[T, T2], iteratee: Callable[[T2, T], Any] | None = None) List
- pydash.collections.flat_map_deep(collection: Mapping[Any, T2], iteratee: Callable[[T2], Any] | None = None) List
- pydash.collections.flat_map_deep(collection: Iterable[T], iteratee: Callable[[T, int, List[T]], Any] | None = None) List
- pydash.collections.flat_map_deep(collection: Iterable[T], iteratee: Callable[[T, int], Any] | None = None) List
- pydash.collections.flat_map_deep(collection: Iterable[T], iteratee: Callable[[T], Any] | None = None) List
This method is like
flat_map()
except that it recursively flattens the mapped results.- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
- Returns:
Flattened mapped list.
Example
>>> duplicate = lambda n: [[n, n]] >>> flat_map_deep([1, 2], duplicate) [1, 1, 2, 2]
New in version 4.0.0.
- pydash.collections.flat_map_depth(collection: Mapping[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], Any] | None = None, depth: int = 1) List [source]#
- pydash.collections.flat_map_depth(collection: Mapping[T, T2], iteratee: Callable[[T2, T], Any] | None = None, depth: int = 1) List
- pydash.collections.flat_map_depth(collection: Mapping[Any, T2], iteratee: Callable[[T2], Any] | None = None, depth: int = 1) List
- pydash.collections.flat_map_depth(collection: Iterable[T], iteratee: Callable[[T, int, List[T]], Any] | None = None, depth: int = 1) List
- pydash.collections.flat_map_depth(collection: Iterable[T], iteratee: Callable[[T, int], Any] | None = None, depth: int = 1) List
- pydash.collections.flat_map_depth(collection: Iterable[T], iteratee: Callable[[T], Any] | None = None, depth: int = 1) List
This method is like
flat_map()
except that it recursively flattens the mapped results up to depth times.- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
- Returns:
Flattened mapped list.
Example
>>> duplicate = lambda n: [[n, n]] >>> flat_map_depth([1, 2], duplicate, 1) [[1, 1], [2, 2]] >>> flat_map_depth([1, 2], duplicate, 2) [1, 1, 2, 2]
New in version 4.0.0.
- pydash.collections.for_each(collection: Dict[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], Any] | int | str | List | Tuple | Dict | None = None) Dict[T, T2] [source]#
- pydash.collections.for_each(collection: Dict[T, T2], iteratee: Callable[[T2, T], Any] | int | str | List | Tuple | Dict | None = None) Dict[T, T2]
- pydash.collections.for_each(collection: Dict[T, T2], iteratee: Callable[[T2], Any] | int | str | List | Tuple | Dict | None = None) Dict[T, T2]
- pydash.collections.for_each(collection: List[T], iteratee: Callable[[T, int, List[T]], Any] | int | str | List | Tuple | Dict | None = None) List[T]
- pydash.collections.for_each(collection: List[T], iteratee: Callable[[T, int], Any] | int | str | List | Tuple | Dict | None = None) List[T]
- pydash.collections.for_each(collection: List[T], iteratee: Callable[[T], Any] | int | str | List | Tuple | Dict | None = None) List[T]
Iterates over elements of a collection, executing the iteratee for each element.
- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
- Returns:
collection
Example
>>> results = {} >>> def cb(x): results[x] = x ** 2 >>> for_each([1, 2, 3, 4], cb) [1, 2, 3, 4] >>> assert results == {1: 1, 2: 4, 3: 9, 4: 16}
New in version 1.0.0.
Changed in version 4.0.0: Removed alias
each
.
- pydash.collections.for_each_right(collection: Dict[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], Any] | int | str | List | Tuple | Dict) Dict[T, T2] [source]#
- pydash.collections.for_each_right(collection: Dict[T, T2], iteratee: Callable[[T2, T], Any] | int | str | List | Tuple | Dict) Dict[T, T2]
- pydash.collections.for_each_right(collection: Dict[T, T2], iteratee: Callable[[T2], Any] | int | str | List | Tuple | Dict) Dict[T, T2]
- pydash.collections.for_each_right(collection: List[T], iteratee: Callable[[T, int, List[T]], Any] | int | str | List | Tuple | Dict) List[T]
- pydash.collections.for_each_right(collection: List[T], iteratee: Callable[[T, int], Any] | int | str | List | Tuple | Dict) List[T]
- pydash.collections.for_each_right(collection: List[T], iteratee: Callable[[T], Any] | int | str | List | Tuple | Dict) List[T]
This method is like
for_each()
except that it iterates over elements of a collection from right to left.- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
- Returns:
collection
Example
>>> results = {'total': 1} >>> def cb(x): results['total'] = x * results['total'] >>> for_each_right([1, 2, 3, 4], cb) [1, 2, 3, 4] >>> assert results == {'total': 24}
New in version 1.0.0.
Changed in version 4.0.0: Removed alias
each_right
.
- pydash.collections.group_by(collection: Iterable[T], iteratee: Callable[[T], T2]) Dict[T2, List[T]] [source]#
- pydash.collections.group_by(collection: Iterable[T], iteratee: int | str | List | Tuple | Dict | None = None) Dict[Any, List[T]]
Creates an object composed of keys generated from the results of running each element of a collection through the iteratee.
- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
- Returns:
Results of grouping by iteratee.
Example
>>> results = group_by([{'a': 1, 'b': 2}, {'a': 3, 'b': 4}], 'a') >>> assert results == {1: [{'a': 1, 'b': 2}], 3: [{'a': 3, 'b': 4}]} >>> results = group_by([{'a': 1, 'b': 2}, {'a': 3, 'b': 4}], {'a': 1}) >>> assert results == {False: [{'a': 3, 'b': 4}], True: [{'a': 1, 'b': 2}]}
New in version 1.0.0.
- pydash.collections.includes(collection: Sequence | Dict, target: Any, from_index: int = 0) bool [source]#
Checks if a given value is present in a collection. If from_index is negative, it is used as the offset from the end of the collection.
- Parameters:
collection – Collection to iterate over.
target – Target value to compare to.
from_index – Offset to start search from.
- Returns:
Whether target is in collection.
Example
>>> includes([1, 2, 3, 4], 2) True >>> includes([1, 2, 3, 4], 2, from_index=2) False >>> includes({'a': 1, 'b': 2, 'c': 3, 'd': 4}, 2) True
New in version 1.0.0.
Changed in version 4.0.0: Renamed from
contains
toincludes
and removed aliasinclude
.
- pydash.collections.invoke_map(collection: Iterable, path: Hashable | List[Hashable], *args: Any, **kwargs: Any) List[Any] [source]#
Invokes the method at path of each element in collection, returning a list of the results of each invoked method. Any additional arguments are provided to each invoked method. If path is a function, it’s invoked for each element in collection.
- Parameters:
collection – Collection to iterate over.
path – String path to method to invoke or callable to invoke for each element in collection.
args – Arguments to pass to method call.
kwargs – Keyword arguments to pass to method call.
- Returns:
List of results of invoking method of each item.
Example
>>> items = [{'a': [{'b': 1}]}, {'a': [{'c': 2}]}] >>> expected = [{'b': 1}.items(), {'c': 2}.items()] >>> invoke_map(items, 'a[0].items') == expected True
New in version 4.0.0.
- pydash.collections.key_by(collection: Iterable[T], iteratee: Callable[[T], T2]) Dict[T2, T] [source]#
- pydash.collections.key_by(collection: Iterable, iteratee: int | str | List | Tuple | Dict | None = None) Dict
Creates an object composed of keys generated from the results of running each element of the collection through the given iteratee.
- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
- Returns:
Results of indexing by iteratee.
Example
>>> results = key_by([{'a': 1, 'b': 2}, {'a': 3, 'b': 4}], 'a') >>> assert results == {1: {'a': 1, 'b': 2}, 3: {'a': 3, 'b': 4}}
New in version 1.0.0.
Changed in version 4.0.0: Renamed from
index_by
tokey_by
.
- pydash.collections.map_(collection: Mapping[Any, T2], iteratee: Callable[[T2], T3]) List[T3] [source]#
- pydash.collections.map_(collection: Mapping[T, T2], iteratee: Callable[[T2, T], T3]) List[T3]
- pydash.collections.map_(collection: Mapping[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], T3]) List[T3]
- pydash.collections.map_(collection: Iterable[T], iteratee: Callable[[T], T2]) List[T2]
- pydash.collections.map_(collection: Iterable[T], iteratee: Callable[[T, int], T2]) List[T2]
- pydash.collections.map_(collection: Iterable[T], iteratee: Callable[[T, int, List[T]], T2]) List[T2]
- pydash.collections.map_(collection: Iterable, iteratee: int | str | List | Tuple | Dict | None = None) List
Creates an array of values by running each element in the collection through the iteratee. The iteratee is invoked with three arguments:
(value, index|key, collection)
. If a property name is passed for iteratee, the createdpluck()
style iteratee will return the property value of the given element. If an object is passed for iteratee, the createdmatches()
style iteratee will returnTrue
for elements that have the properties of the given object, elseFalse
.- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
- Returns:
Mapped list.
Example
>>> map_([1, 2, 3, 4], str) ['1', '2', '3', '4'] >>> map_([{'a': 1, 'b': 2}, {'a': 3, 'b': 4}, {'a': 5, 'b': 6}], 'a') [1, 3, 5] >>> map_([[[0, 1]], [[2, 3]], [[4, 5]]], '0.1') [1, 3, 5] >>> map_([{'a': {'b': 1}}, {'a': {'b': 2}}], 'a.b') [1, 2] >>> map_([{'a': {'b': [0, 1]}}, {'a': {'b': [2, 3]}}], 'a.b[1]') [1, 3]
New in version 1.0.0.
Changed in version 4.0.0: Removed alias
collect
.
- pydash.collections.nest(collection: Iterable, *properties: Any) Any [source]#
This method is like
group_by()
except that it supports nested grouping by multiple string properties. If only a single key is given, it is like callinggroup_by(collection, prop)
.- Parameters:
collection – Collection to iterate over.
*properties – Properties to nest by.
- Returns:
Results of nested grouping by properties.
Example
>>> results = nest([{'shape': 'square', 'color': 'red', 'qty': 5}, {'shape': 'square', 'color': 'blue', 'qty': 10}, {'shape': 'square', 'color': 'orange', 'qty': 5}, {'shape': 'circle', 'color': 'yellow', 'qty': 5}, {'shape': 'circle', 'color': 'pink', 'qty': 10}, {'shape': 'oval', 'color': 'purple', 'qty': 5}], 'shape', 'qty') >>> expected = { 'square': {5: [{'shape': 'square', 'color': 'red', 'qty': 5}, {'shape': 'square', 'color': 'orange', 'qty': 5}], 10: [{'shape': 'square', 'color': 'blue', 'qty': 10}]}, 'circle': {5: [{'shape': 'circle', 'color': 'yellow', 'qty': 5}], 10: [{'shape': 'circle', 'color': 'pink', 'qty': 10}]}, 'oval': {5: [{'shape': 'oval', 'color': 'purple', 'qty': 5}]}} >>> results == expected True
New in version 4.3.0.
- pydash.collections.order_by(collection: Mapping[Any, T2], keys: Iterable[str | int], orders: Iterable[bool] | bool, reverse: bool = False) List[T2] [source]#
- pydash.collections.order_by(collection: Mapping[Any, T2], keys: Iterable[str], orders: None = None, reverse: bool = False) List[T2]
- pydash.collections.order_by(collection: Iterable[T], keys: Iterable[str | int], orders: Iterable[bool] | bool, reverse: bool = False) List[T]
- pydash.collections.order_by(collection: Iterable[T], keys: Iterable[str], orders: None = None, reverse: bool = False) List[T]
This method is like
sort_by()
except that it sorts by key names instead of an iteratee function. Keys can be sorted in descending order by prepending a"-"
to the key name (e.g."name"
would become"-name"
) or by passing a list of boolean sort options via orders whereTrue
is ascending andFalse
is descending.- Parameters:
collection – Collection to iterate over.
keys – List of keys to sort by. By default, keys will be sorted in ascending order. To sort a key in descending order, prepend a
"-"
to the key name. For example, to sort the key value for"name"
in descending order, use"-name"
.orders – List of boolean sort orders to apply for each key.
True
corresponds to ascending order whileFalse
is descending. Defaults toNone
.reverse (bool, optional) – Whether to reverse the sort. Defaults to
False
.
- Returns:
Sorted list.
Example
>>> items = [{'a': 2, 'b': 1}, {'a': 3, 'b': 2}, {'a': 1, 'b': 3}] >>> results = order_by(items, ['b', 'a']) >>> assert results == [{'a': 2, 'b': 1}, {'a': 3, 'b': 2}, {'a': 1, 'b': 3}] >>> results = order_by(items, ['a', 'b']) >>> assert results == [{'a': 1, 'b': 3}, {'a': 2, 'b': 1}, {'a': 3, 'b': 2}] >>> results = order_by(items, ['-a', 'b']) >>> assert results == [{'a': 3, 'b': 2}, {'a': 2, 'b': 1}, {'a': 1, 'b': 3}] >>> results = order_by(items, ['a', 'b'], [False, True]) >>> assert results == [{'a': 3, 'b': 2}, {'a': 2, 'b': 1}, {'a': 1, 'b': 3}]
New in version 3.0.0.
Changed in version 3.2.0: Added orders argument.
Changed in version 3.2.0: Added
sort_by_order()
as alias.Changed in version 4.0.0: Renamed from
order_by
toorder_by
and removed aliassort_by_order
.
- pydash.collections.partition(collection: Mapping[T, T2], predicate: Callable[[T2, T, Dict[T, T2]], Any]) List[List[T2]] [source]#
- pydash.collections.partition(collection: Mapping[T, T2], predicate: Callable[[T2, T], Any]) List[List[T2]]
- pydash.collections.partition(collection: Mapping[Any, T2], predicate: Callable[[T2], Any]) List[List[T2]]
- pydash.collections.partition(collection: Mapping[Any, T2], predicate: int | str | List | Tuple | Dict | None = None) List[List[T2]]
- pydash.collections.partition(collection: Iterable[T], predicate: Callable[[T, int, List[T]], Any]) List[List[T]]
- pydash.collections.partition(collection: Iterable[T], predicate: Callable[[T, int], Any]) List[List[T]]
- pydash.collections.partition(collection: Iterable[T], predicate: Callable[[T], Any]) List[List[T]]
- pydash.collections.partition(collection: Iterable[T], predicate: int | str | List | Tuple | Dict | None = None) List[List[T]]
Creates an array of elements split into two groups, the first of which contains elements the predicate returns truthy for, while the second of which contains elements the predicate returns falsey for. The predicate is invoked with three arguments:
(value, index|key, collection)
.If a property name is provided for predicate the created
pluck()
style predicate returns the property value of the given element.If an object is provided for predicate the created
matches()
style predicate returnsTrue
for elements that have the properties of the given object, elseFalse
.- Parameters:
collection – Collection to iterate over.
predicate – Predicate applied per iteration.
- Returns:
List of grouped elements.
Example
>>> partition([1, 2, 3, 4], lambda x: x >= 3) [[3, 4], [1, 2]]
New in version 1.1.0.
- pydash.collections.pluck(collection: Iterable, path: Hashable | List[Hashable]) List [source]#
Retrieves the value of a specified property from all elements in the collection.
- Parameters:
collection – List of dicts.
path – Collection’s path to pluck
- Returns:
Plucked list.
Example
>>> pluck([{'a': 1, 'b': 2}, {'a': 3, 'b': 4}, {'a': 5, 'b': 6}], 'a') [1, 3, 5] >>> pluck([[[0, 1]], [[2, 3]], [[4, 5]]], '0.1') [1, 3, 5] >>> pluck([{'a': {'b': 1}}, {'a': {'b': 2}}], 'a.b') [1, 2] >>> pluck([{'a': {'b': [0, 1]}}, {'a': {'b': [2, 3]}}], 'a.b.1') [1, 3] >>> pluck([{'a': {'b': [0, 1]}}, {'a': {'b': [2, 3]}}], ['a', 'b', 1]) [1, 3]
New in version 1.0.0.
Changed in version 4.0.0: Function removed.
Changed in version 4.0.1: Made property access deep.
- pydash.collections.reduce_(collection: Mapping[T, T2], iteratee: Callable[[T3, T2, T], T3], accumulator: T3) T3 [source]#
- pydash.collections.reduce_(collection: Mapping[Any, T2], iteratee: Callable[[T3, T2], T3], accumulator: T3) T3
- pydash.collections.reduce_(collection: Mapping, iteratee: Callable[[T3], T3], accumulator: T3) T3
- pydash.collections.reduce_(collection: Mapping[T, T2], iteratee: Callable[[T2, T2, T], T2], accumulator: None = None) T2
- pydash.collections.reduce_(collection: Mapping[Any, T2], iteratee: Callable[[T2, T2], T2], accumulator: None = None) T2
- pydash.collections.reduce_(collection: Mapping, iteratee: Callable[[T], T], accumulator: None = None) T
- pydash.collections.reduce_(collection: Iterable[T], iteratee: Callable[[T2, T, int], T2], accumulator: T2) T2
- pydash.collections.reduce_(collection: Iterable[T], iteratee: Callable[[T2, T], T2], accumulator: T2) T2
- pydash.collections.reduce_(collection: Iterable, iteratee: Callable[[T2], T2], accumulator: T2) T2
- pydash.collections.reduce_(collection: Iterable[T], iteratee: Callable[[T, T, int], T], accumulator: None = None) T
- pydash.collections.reduce_(collection: Iterable[T], iteratee: Callable[[T, T], T], accumulator: None = None) T
- pydash.collections.reduce_(collection: Iterable, iteratee: Callable[[T], T], accumulator: None = None) T
- pydash.collections.reduce_(collection: Iterable[T], iteratee: None = None, accumulator: T | None = None) T
Reduces a collection to a value which is the accumulated result of running each element in the collection through the iteratee, where each successive iteratee execution consumes the return value of the previous execution.
- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
accumulator – Initial value of aggregator. Default is to use the result of the first iteration.
- Returns:
Accumulator object containing results of reduction.
Example
>>> reduce_([1, 2, 3, 4], lambda total, x: total * x) 24
New in version 1.0.0.
Changed in version 4.0.0: Removed aliases
foldl
andinject
.
- pydash.collections.reduce_right(collection: Mapping[T, T2], iteratee: Callable[[T3, T2, T], T3], accumulator: T3) T3 [source]#
- pydash.collections.reduce_right(collection: Mapping[Any, T2], iteratee: Callable[[T3, T2], T3], accumulator: T3) T3
- pydash.collections.reduce_right(collection: Mapping, iteratee: Callable[[T3], T3], accumulator: T3) T3
- pydash.collections.reduce_right(collection: Mapping[T, T2], iteratee: Callable[[T2, T2, T], T2], accumulator: None = None) T2
- pydash.collections.reduce_right(collection: Mapping[Any, T2], iteratee: Callable[[T2, T2], T2], accumulator: None = None) T2
- pydash.collections.reduce_right(collection: Mapping, iteratee: Callable[[T], T], accumulator: None = None) T
- pydash.collections.reduce_right(collection: Iterable[T], iteratee: Callable[[T2, T, int], T2], accumulator: T2) T2
- pydash.collections.reduce_right(collection: Iterable[T], iteratee: Callable[[T2, T], T2], accumulator: T2) T2
- pydash.collections.reduce_right(collection: Iterable, iteratee: Callable[[T2], T2], accumulator: T2) T2
- pydash.collections.reduce_right(collection: Iterable[T], iteratee: Callable[[T, T, int], T], accumulator: None = None) T
- pydash.collections.reduce_right(collection: Iterable[T], iteratee: Callable[[T, T], T], accumulator: None = None) T
- pydash.collections.reduce_right(collection: Iterable, iteratee: Callable[[T], T], accumulator: None = None) T
- pydash.collections.reduce_right(collection: Iterable[T], iteratee: None = None, accumulator: T | None = None) T
This method is like
reduce_()
except that it iterates over elements of a collection from right to left.- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
accumulator – Initial value of aggregator. Default is to use the result of the first iteration.
- Returns:
Accumulator object containing results of reduction.
Example
>>> reduce_right([1, 2, 3, 4], lambda total, x: total ** x) 4096
New in version 1.0.0.
Changed in version 3.2.1: Fix bug where collection was not reversed correctly.
Changed in version 4.0.0: Removed alias
foldr
.
- pydash.collections.reductions(collection: Mapping[T, T2], iteratee: Callable[[T3, T2, T], T3], accumulator: T3, from_right: bool = False) List[T3] [source]#
- pydash.collections.reductions(collection: Mapping[Any, T2], iteratee: Callable[[T3, T2], T3], accumulator: T3, from_right: bool = False) List[T3]
- pydash.collections.reductions(collection: Mapping, iteratee: Callable[[T3], T3], accumulator: T3, from_right: bool = False) List[T3]
- pydash.collections.reductions(collection: Mapping[T, T2], iteratee: Callable[[T2, T2, T], T2], accumulator: None = None, from_right: bool = False) List[T2]
- pydash.collections.reductions(collection: Mapping[Any, T2], iteratee: Callable[[T2, T2], T2], accumulator: None = None, from_right: bool = False) List[T2]
- pydash.collections.reductions(collection: Mapping, iteratee: Callable[[T], T], accumulator: None = None, from_right: bool = False) List[T]
- pydash.collections.reductions(collection: Iterable[T], iteratee: Callable[[T2, T, int], T2], accumulator: T2, from_right: bool = False) List[T2]
- pydash.collections.reductions(collection: Iterable[T], iteratee: Callable[[T2, T], T2], accumulator: T2, from_right: bool = False) List[T2]
- pydash.collections.reductions(collection: Iterable, iteratee: Callable[[T2], T2], accumulator: T2, from_right: bool = False) List[T2]
- pydash.collections.reductions(collection: Iterable[T], iteratee: Callable[[T, T, int], T], accumulator: None = None, from_right: bool = False) List[T]
- pydash.collections.reductions(collection: Iterable[T], iteratee: Callable[[T, T], T], accumulator: None = None, from_right: bool = False) List[T]
- pydash.collections.reductions(collection: Iterable, iteratee: Callable[[T], T], accumulator: None = None, from_right: bool = False) List[T]
- pydash.collections.reductions(collection: Iterable[T], iteratee: None = None, accumulator: T | None = None, from_right: bool = False) List[T]
This function is like
reduce_()
except that it returns a list of every intermediate value in the reduction operation.- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
accumulator – Initial value of aggregator. Default is to use the result of the first iteration.
- Returns:
Results of each reduction operation.
Example
>>> reductions([1, 2, 3, 4], lambda total, x: total * x) [2, 6, 24]
Note
The last element of the returned list would be the result of using
reduce_()
.New in version 2.0.0.
- pydash.collections.reductions_right(collection: Mapping[T, T2], iteratee: Callable[[T3, T2, T], T3], accumulator: T3) List[T3] [source]#
- pydash.collections.reductions_right(collection: Mapping[Any, T2], iteratee: Callable[[T3, T2], T3], accumulator: T3) List[T3]
- pydash.collections.reductions_right(collection: Mapping, iteratee: Callable[[T3], T3], accumulator: T3) List[T3]
- pydash.collections.reductions_right(collection: Mapping[T, T2], iteratee: Callable[[T2, T2, T], T2], accumulator: None = None) List[T2]
- pydash.collections.reductions_right(collection: Mapping[Any, T2], iteratee: Callable[[T2, T2], T2], accumulator: None = None) List[T2]
- pydash.collections.reductions_right(collection: Mapping, iteratee: Callable[[T], T], accumulator: None = None) List[T]
- pydash.collections.reductions_right(collection: Iterable[T], iteratee: Callable[[T2, T, int], T2], accumulator: T2) List[T2]
- pydash.collections.reductions_right(collection: Iterable[T], iteratee: Callable[[T2, T], T2], accumulator: T2) List[T2]
- pydash.collections.reductions_right(collection: Iterable, iteratee: Callable[[T2], T2], accumulator: T2) List[T2]
- pydash.collections.reductions_right(collection: Iterable[T], iteratee: Callable[[T, T, int], T], accumulator: None = None) List[T]
- pydash.collections.reductions_right(collection: Iterable[T], iteratee: Callable[[T, T], T], accumulator: None = None) List[T]
- pydash.collections.reductions_right(collection: Iterable, iteratee: Callable[[T], T], accumulator: None = None) List[T]
- pydash.collections.reductions_right(collection: Iterable[T], iteratee: None = None, accumulator: T | None = None) List[T]
This method is like
reductions()
except that it iterates over elements of a collection from right to left.- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
accumulator – Initial value of aggregator. Default is to use the result of the first iteration.
- Returns:
Results of each reduction operation.
Example
>>> reductions_right([1, 2, 3, 4], lambda total, x: total ** x) [64, 4096, 4096]
Note
The last element of the returned list would be the result of using
reduce_()
.New in version 2.0.0.
- pydash.collections.reject(collection: Mapping[T, T2], predicate: Callable[[T2, T, Dict[T, T2]], Any] | int | str | List | Tuple | Dict | None = None) List[T2] [source]#
- pydash.collections.reject(collection: Mapping[T, T2], predicate: Callable[[T2, T], Any] | int | str | List | Tuple | Dict | None = None) List[T2]
- pydash.collections.reject(collection: Mapping[Any, T2], predicate: Callable[[T2], Any] | int | str | List | Tuple | Dict | None = None) List[T2]
- pydash.collections.reject(collection: Iterable[T], predicate: Callable[[T, int, List[T]], Any] | int | str | List | Tuple | Dict | None = None) List[T]
- pydash.collections.reject(collection: Iterable[T], predicate: Callable[[T, int], Any] | int | str | List | Tuple | Dict | None = None) List[T]
- pydash.collections.reject(collection: Iterable[T], predicate: Callable[[T], Any] | int | str | List | Tuple | Dict | None = None) List[T]
The opposite of
filter_()
this method returns the elements of a collection that the predicate does not return truthy for.- Parameters:
collection – Collection to iterate over.
predicate – Predicate applied per iteration.
- Returns:
Rejected elements of collection.
Example
>>> reject([1, 2, 3, 4], lambda x: x >= 3) [1, 2] >>> reject([{'a': 0}, {'a': 1}, {'a': 2}], 'a') [{'a': 0}] >>> reject([{'a': 0}, {'a': 1}, {'a': 2}], {'a': 1}) [{'a': 0}, {'a': 2}]
New in version 1.0.0.
- pydash.collections.sample(collection: Sequence[T]) T [source]#
Retrieves a random element from a given collection.
- Parameters:
collection – Collection to iterate over.
- Returns:
Random element from the given collection.
Example
>>> items = [1, 2, 3, 4, 5] >>> results = sample(items) >>> assert results in items
New in version 1.0.0.
Changed in version 4.0.0: Moved multiple samples functionality to
sample_size()
. This function now only returns a single random sample.
- pydash.collections.sample_size(collection: Sequence[T], n: int | None = None) List[T] [source]#
Retrieves list of n random elements from a collection.
- Parameters:
collection – Collection to iterate over.
n – Number of random samples to return.
- Returns:
List of n sampled collection values.
Examples
>>> items = [1, 2, 3, 4, 5] >>> results = sample_size(items, 2) >>> assert len(results) == 2 >>> assert set(items).intersection(results) == set(results)
New in version 4.0.0.
- pydash.collections.shuffle(collection: Mapping[Any, T]) List[T] [source]#
- pydash.collections.shuffle(collection: Iterable[T]) List[T]
Creates a list of shuffled values, using a version of the Fisher-Yates shuffle.
- Parameters:
collection – Collection to iterate over.
- Returns:
Shuffled list of values.
Example
>>> items = [1, 2, 3, 4] >>> results = shuffle(items) >>> assert len(results) == len(items) >>> assert set(results) == set(items)
New in version 1.0.0.
- pydash.collections.size(collection: Sized) int [source]#
Gets the size of the collection by returning len(collection) for iterable objects.
- Parameters:
collection – Collection to iterate over.
- Returns:
Collection length.
Example
>>> size([1, 2, 3, 4]) 4
New in version 1.0.0.
- pydash.collections.some(collection: Iterable[T], predicate: Callable[[T], Any] | None = None) bool [source]#
Checks if the predicate returns a truthy value for any element of a collection. The predicate is invoked with three arguments:
(value, index|key, collection)
. If a property name is passed for predicate, the createdmap_()
style predicate will return the property value of the given element. If an object is passed for predicate, the createdmatches()
style predicate will returnTrue
for elements that have the properties of the given object, elseFalse
.- Parameters:
collection – Collection to iterate over.
predicate – Predicate applied per iteration.
- Returns:
Whether any of the elements are truthy.
Example
>>> some([False, True, 0]) True >>> some([False, 0, None]) False >>> some([1, 2, 3, 4], lambda x: x >= 3) True >>> some([1, 2, 3, 4], lambda x: x == 0) False
New in version 1.0.0.
Changed in version 4.0.0: Removed alias
any_
.
- pydash.collections.sort_by(collection: Mapping[Any, T2], iteratee: Callable[[T2], Any] | int | str | List | Tuple | Dict | None = None, reverse: bool = False) List[T2] [source]#
- pydash.collections.sort_by(collection: Iterable[T], iteratee: Callable[[T], Any] | int | str | List | Tuple | Dict | None = None, reverse: bool = False) List[T]
Creates a list of elements, sorted in ascending order by the results of running each element in a collection through the iteratee.
- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
reverse – Whether to reverse the sort. Defaults to
False
.
- Returns:
Sorted list.
Example
>>> sort_by({'a': 2, 'b': 3, 'c': 1}) [1, 2, 3] >>> sort_by({'a': 2, 'b': 3, 'c': 1}, reverse=True) [3, 2, 1] >>> sort_by([{'a': 2}, {'a': 3}, {'a': 1}], 'a') [{'a': 1}, {'a': 2}, {'a': 3}]
New in version 1.0.0.
Functions#
Functions that wrap other functions.
New in version 1.0.0.
- pydash.functions.after(func: Callable[[P], T], n: SupportsInt) After[P, T] [source]#
Creates a function that executes func, with the arguments of the created function, only after being called n times.
- Parameters:
func – Function to execute.
n – Number of times func must be called before it is executed.
- Returns:
Function wrapped in an
After
context.
Example
>>> func = lambda a, b, c: (a, b, c) >>> after_func = after(func, 3) >>> after_func(1, 2, 3) >>> after_func(1, 2, 3) >>> after_func(1, 2, 3) (1, 2, 3) >>> after_func(4, 5, 6) (4, 5, 6)
New in version 1.0.0.
Changed in version 3.0.0: Reordered arguments to make func first.
- pydash.functions.ary(func: Callable[[...], T], n: SupportsInt | None) Ary[T] [source]#
Creates a function that accepts up to n arguments ignoring any additional arguments. Only positional arguments are capped. All keyword arguments are allowed through.
- Parameters:
func – Function to cap arguments for.
n – Number of arguments to accept.
- Returns:
Function wrapped in an
Ary
context.
Example
>>> func = lambda a, b, c=0, d=5: (a, b, c, d) >>> ary_func = ary(func, 2) >>> ary_func(1, 2, 3, 4, 5, 6) (1, 2, 0, 5) >>> ary_func(1, 2, 3, 4, 5, 6, c=10, d=20) (1, 2, 10, 20)
New in version 3.0.0.
- pydash.functions.before(func: Callable[[P], T], n: SupportsInt) Before[P, T] [source]#
Creates a function that executes func, with the arguments of the created function, until it has been called n times.
- Parameters:
func – Function to execute.
n – Number of times func may be executed.
- Returns:
Function wrapped in an
Before
context.
Example
>>> func = lambda a, b, c: (a, b, c) >>> before_func = before(func, 3) >>> before_func(1, 2, 3) (1, 2, 3) >>> before_func(1, 2, 3) (1, 2, 3) >>> before_func(1, 2, 3) >>> before_func(1, 2, 3)
New in version 1.1.0.
Changed in version 3.0.0: Reordered arguments to make func first.
- pydash.functions.conjoin(*funcs: Callable[[T], Any]) Callable[[Iterable[T]], bool] [source]#
Creates a function that composes multiple predicate functions into a single predicate that tests whether all elements of an object pass each predicate.
- Parameters:
*funcs – Function(s) to conjoin.
- Returns:
Function(s) wrapped in a
Conjoin
context.
Example
>>> conjoiner = conjoin(lambda x: isinstance(x, int), lambda x: x > 3) >>> conjoiner([1, 2, 3]) False >>> conjoiner([1.0, 2, 1]) False >>> conjoiner([4.0, 5, 6]) False >>> conjoiner([4, 5, 6]) True
New in version 2.0.0.
- pydash.functions.curry(func: Callable[[T1], T], arity: int | None = None) CurryOne[T1, T] [source]#
- pydash.functions.curry(func: Callable[[T1, T2], T], arity: int | None = None) CurryTwo[T1, T2, T]
- pydash.functions.curry(func: Callable[[T1, T2, T3], T], arity: int | None = None) CurryThree[T1, T2, T3, T]
- pydash.functions.curry(func: Callable[[T1, T2, T3, T4], T], arity: int | None = None) CurryFour[T1, T2, T3, T4, T]
- pydash.functions.curry(func: Callable[[T1, T2, T3, T4, T5], T], arity: int | None = None) CurryFive[T1, T2, T3, T4, T5, T]
Creates a function that accepts one or more arguments of func that when invoked either executes func returning its result (if all func arguments have been provided) or returns a function that accepts one or more of the remaining func arguments, and so on.
- Parameters:
func – Function to curry.
arity – Number of function arguments that can be accepted by curried function. Default is to use the number of arguments that are accepted by func.
- Returns:
Function wrapped in a
Curry
context.
Example
>>> func = lambda a, b, c: (a, b, c) >>> currier = curry(func) >>> currier = currier(1) >>> assert isinstance(currier, Curry) >>> currier = currier(2) >>> assert isinstance(currier, Curry) >>> currier = currier(3) >>> currier (1, 2, 3)
New in version 1.0.0.
- pydash.functions.curry_right(func: Callable[[T1], T], arity: int | None = None) CurryRightOne[T1, T] [source]#
- pydash.functions.curry_right(func: Callable[[T1, T2], T], arity: int | None = None) CurryRightTwo[T2, T1, T]
- pydash.functions.curry_right(func: Callable[[T1, T2, T3], T], arity: int | None = None) CurryRightThree[T3, T2, T1, T]
- pydash.functions.curry_right(func: Callable[[T1, T2, T3, T4], T], arity: int | None = None) CurryRightFour[T4, T3, T2, T1, T]
- pydash.functions.curry_right(func: Callable[[T1, T2, T3, T4, T5], T]) CurryRightFive[T5, T4, T3, T2, T1, T]
This method is like
curry()
except that arguments are applied to func in the manner ofpartial_right()
instead ofpartial()
.- Parameters:
func – Function to curry.
arity – Number of function arguments that can be accepted by curried function. Default is to use the number of arguments that are accepted by func.
- Returns:
Function wrapped in a
CurryRight
context.
Example
>>> func = lambda a, b, c: (a, b, c) >>> currier = curry_right(func) >>> currier = currier(1) >>> assert isinstance(currier, CurryRight) >>> currier = currier(2) >>> assert isinstance(currier, CurryRight) >>> currier = currier(3) >>> currier (3, 2, 1)
New in version 1.1.0.
- pydash.functions.debounce(func: Callable[[P], T], wait: int, max_wait: int | Literal[False] = False) Debounce[P, T] [source]#
Creates a function that will delay the execution of func until after wait milliseconds have elapsed since the last time it was invoked. Subsequent calls to the debounced function will return the result of the last func call.
- Parameters:
func – Function to execute.
wait – Milliseconds to wait before executing func.
max_wait (optional) – Maximum time to wait before executing func.
- Returns:
Function wrapped in a
Debounce
context.
New in version 1.0.0.
- pydash.functions.delay(func: ~typing.Callable[[~P], ~pydash.functions.T], wait: int, *args: ~typing.~P, **kwargs: ~typing.~P) T [source]#
Executes the func function after wait milliseconds. Additional arguments will be provided to func when it is invoked.
- Parameters:
func – Function to execute.
wait – Milliseconds to wait before executing func.
*args – Arguments to pass to func.
**kwargs – Keyword arguments to pass to func.
- Returns:
Return from func.
New in version 1.0.0.
- pydash.functions.disjoin(*funcs: Callable[[T], Any]) Disjoin[T] [source]#
Creates a function that composes multiple predicate functions into a single predicate that tests whether any elements of an object pass each predicate.
- Parameters:
*funcs – Function(s) to disjoin.
- Returns:
Function(s) wrapped in a
Disjoin
context.
Example
>>> disjoiner = disjoin(lambda x: isinstance(x, float), lambda x: isinstance(x, int)) >>> disjoiner([1, '2', '3']) True >>> disjoiner([1.0, '2', '3']) True >>> disjoiner(['1', '2', '3']) False
New in version 2.0.0.
- pydash.functions.flip(func: Callable[[T1, T2, T3, T4, T5], T]) Callable[[T5, T4, T3, T2, T1], T] [source]#
- pydash.functions.flip(func: Callable[[T1, T2, T3, T4], T]) Callable[[T4, T3, T2, T1], T]
- pydash.functions.flip(func: Callable[[T1, T2, T3], T]) Callable[[T3, T2, T1], T]
- pydash.functions.flip(func: Callable[[T1, T2], T]) Callable[[T2, T1], T]
- pydash.functions.flip(func: Callable[[T1], T]) Callable[[T1], T]
Creates a function that invokes the method with arguments reversed.
- Parameters:
func – Function to flip arguments for.
- Returns:
Function wrapped in a
Flip
context.
Example
>>> flipped = flip(lambda *args: args) >>> flipped(1, 2, 3, 4) (4, 3, 2, 1) >>> flipped = flip(lambda *args: [i * 2 for i in args]) >>> flipped(1, 2, 3, 4) [8, 6, 4, 2]
New in version 4.0.0.
- pydash.functions.flow(func1: Callable[[P], T2], func2: Callable[[T2], T3], func3: Callable[[T3], T4], func4: Callable[[T4], T5], func5: Callable[[T5], T]) Flow[P, T] [source]#
- pydash.functions.flow(func1: Callable[[P], T2], func2: Callable[[T2], T3], func3: Callable[[T3], T4], func4: Callable[[T4], T]) Flow[P, T]
- pydash.functions.flow(func1: Callable[[P], T2], func2: Callable[[T2], T3], func3: Callable[[T3], T]) Flow[P, T]
- pydash.functions.flow(func1: Callable[[P], T2], func2: Callable[[T2], T]) Flow[P, T]
- pydash.functions.flow(func1: Callable[[P], T]) Flow[P, T]
Creates a function that is the composition of the provided functions, where each successive invocation is supplied the return value of the previous. For example, composing the functions
f()
,g()
, andh()
producesh(g(f()))
.- Parameters:
*funcs – Function(s) to compose.
- Returns:
Function(s) wrapped in a
Flow
context.
Example
>>> mult_5 = lambda x: x * 5 >>> div_10 = lambda x: x / 10.0 >>> pow_2 = lambda x: x ** 2 >>> ops = flow(sum, mult_5, div_10, pow_2) >>> ops([1, 2, 3, 4]) 25.0
New in version 2.0.0.
Changed in version 2.3.1: Added
pipe()
as alias.Changed in version 4.0.0: Removed alias
pipe
.
- pydash.functions.flow_right(func5: Callable[[T4], T], func4: Callable[[T3], T4], func3: Callable[[T2], T3], func2: Callable[[T1], T2], func1: Callable[[P], T1]) Flow[P, T] [source]#
- pydash.functions.flow_right(func4: Callable[[T3], T], func3: Callable[[T2], T3], func2: Callable[[T1], T2], func1: Callable[[P], T1]) Flow[P, T]
- pydash.functions.flow_right(func3: Callable[[T2], T], func2: Callable[[T1], T2], func1: Callable[[P], T1]) Flow[P, T]
- pydash.functions.flow_right(func2: Callable[[T1], T], func1: Callable[[P], T1]) Flow[P, T]
- pydash.functions.flow_right(func1: Callable[[P], T]) Flow[P, T]
This function is like
flow()
except that it creates a function that invokes the provided functions from right to left. For example, composing the functionsf()
,g()
, andh()
producesf(g(h()))
.- Parameters:
*funcs – Function(s) to compose.
- Returns:
Function(s) wrapped in a
Flow
context.
Example
>>> mult_5 = lambda x: x * 5 >>> div_10 = lambda x: x / 10.0 >>> pow_2 = lambda x: x ** 2 >>> ops = flow_right(mult_5, div_10, pow_2, sum) >>> ops([1, 2, 3, 4]) 50.0
New in version 1.0.0.
Changed in version 2.0.0: Added
flow_right()
and madecompose()
an alias.Changed in version 2.3.1: Added
pipe_right()
as alias.Changed in version 4.0.0: Removed aliases
pipe_right
andcompose
.
- pydash.functions.iterated(func: Callable[[T], T]) Iterated[T] [source]#
Creates a function that is composed with itself. Each call to the iterated function uses the previous function call’s result as input. Returned
Iterated
instance can be called with(initial, n)
where initial is the initial value to seed func with and n is the number of times to call func.- Parameters:
func – Function to iterate.
- Returns:
Function wrapped in a
Iterated
context.
Example
>>> doubler = iterated(lambda x: x * 2) >>> doubler(4, 5) 128 >>> doubler(3, 9) 1536
New in version 2.0.0.
- pydash.functions.juxtapose(*funcs: Callable[[P], T]) Juxtapose[P, T] [source]#
Creates a function whose return value is a list of the results of calling each funcs with the supplied arguments.
- Parameters:
*funcs – Function(s) to juxtapose.
- Returns:
Function wrapped in a
Juxtapose
context.
Example
>>> double = lambda x: x * 2 >>> triple = lambda x: x * 3 >>> quadruple = lambda x: x * 4 >>> juxtapose(double, triple, quadruple)(5) [10, 15, 20]
New in version 2.0.0.
- pydash.functions.negate(func: Callable[[P], Any]) Negate[P] [source]#
Creates a function that negates the result of the predicate func. The func function is executed with the arguments of the created function.
- Parameters:
func – Function to negate execute.
- Returns:
Function wrapped in a
Negate
context.
Example
>>> not_is_number = negate(lambda x: isinstance(x, (int, float))) >>> not_is_number(1) False >>> not_is_number('1') True
New in version 1.1.0.
- pydash.functions.once(func: Callable[[P], T]) Once[P, T] [source]#
Creates a function that is restricted to execute func once. Repeat calls to the function will return the value of the first call.
- Parameters:
func – Function to execute.
- Returns:
Function wrapped in a
Once
context.
Example
>>> oncer = once(lambda *args: args[0]) >>> oncer(5) 5 >>> oncer(6) 5
New in version 1.0.0.
- pydash.functions.over_args(func: Callable[[T1, T2, T3, T4, T5], T], transform_one: Callable[[T1], T1], transform_two: Callable[[T2], T2], transform_three: Callable[[T3], T3], transform_four: Callable[[T4], T4], transform_five: Callable[[T5], T5]) Callable[[T1, T2, T3, T4, T5], T] [source]#
- pydash.functions.over_args(func: Callable[[T1, T2, T3, T4], T], transform_one: Callable[[T1], T1], transform_two: Callable[[T2], T2], transform_three: Callable[[T3], T3], transform_four: Callable[[T4], T4]) Callable[[T1, T2, T3, T4], T]
- pydash.functions.over_args(func: Callable[[T1, T2, T3], T], transform_one: Callable[[T1], T1], transform_two: Callable[[T2], T2], transform_three: Callable[[T3], T3]) Callable[[T1, T2, T3], T]
- pydash.functions.over_args(func: Callable[[T1, T2], T], transform_one: Callable[[T1], T1], transform_two: Callable[[T2], T2]) Callable[[T1, T2], T]
- pydash.functions.over_args(func: Callable[[T1], T], transform_one: Callable[[T1], T1]) Callable[[T1], T]
Creates a function that runs each argument through a corresponding transform function.
- Parameters:
func – Function to wrap.
*transforms – Functions to transform arguments, specified as individual functions or lists of functions.
- Returns:
Function wrapped in a
OverArgs
context.
Example
>>> squared = lambda x: x ** 2 >>> double = lambda x: x * 2 >>> modder = over_args(lambda x, y: [x, y], squared, double) >>> modder(5, 10) [25, 20]
New in version 3.3.0.
Changed in version 4.0.0: Renamed from
mod_args
toover_args
.
- pydash.functions.partial(func: Callable[[...], T], *args: Any, **kwargs: Any) Partial[T] [source]#
Creates a function that, when called, invokes func with any additional partial arguments prepended to those provided to the new function.
- Parameters:
func – Function to execute.
*args – Partial arguments to prepend to function call.
**kwargs – Partial keyword arguments to bind to function call.
- Returns:
Function wrapped in a
Partial
context.
Example
>>> dropper = partial(lambda array, n: array[n:], [1, 2, 3, 4]) >>> dropper(2) [3, 4] >>> dropper(1) [2, 3, 4] >>> myrest = partial(lambda array, n: array[n:], n=1) >>> myrest([1, 2, 3, 4]) [2, 3, 4]
New in version 1.0.0.
- pydash.functions.partial_right(func: Callable[[...], T], *args: Any, **kwargs: Any) Partial[T] [source]#
This method is like
partial()
except that partial arguments are appended to those provided to the new function.- Parameters:
func – Function to execute.
*args – Partial arguments to append to function call.
**kwargs – Partial keyword arguments to bind to function call.
- Returns:
Function wrapped in a
Partial
context.
Example
>>> myrest = partial_right(lambda array, n: array[n:], 1) >>> myrest([1, 2, 3, 4]) [2, 3, 4]
New in version 1.0.0.
- pydash.functions.rearg(func: Callable[[P], T], *indexes: int) Rearg[P, T] [source]#
Creates a function that invokes func with arguments arranged according to the specified indexes where the argument value at the first index is provided as the first argument, the argument value at the second index is provided as the second argument, and so on.
- Parameters:
func – Function to rearrange arguments for.
*indexes – The arranged argument indexes.
- Returns:
Function wrapped in a
Rearg
context.
Example
>>> jumble = rearg(lambda *args: args, 1, 2, 3) >>> jumble(1, 2, 3) (2, 3, 1) >>> jumble('a', 'b', 'c', 'd', 'e') ('b', 'c', 'd', 'a', 'e')
New in version 3.0.0.
- pydash.functions.spread(func: Callable[[...], T]) Spread[T] [source]#
Creates a function that invokes func with the array of arguments provided to the created function.
- Parameters:
func – Function to spread.
- Returns:
Function wrapped in a
Spread
context.
Example
>>> greet = spread(lambda *people: 'Hello ' + ', '.join(people) + '!') >>> greet(['Mike', 'Don', 'Leo']) 'Hello Mike, Don, Leo!'
New in version 3.1.0.
- pydash.functions.throttle(func: Callable[[P], T], wait: int) Throttle[P, T] [source]#
Creates a function that, when executed, will only call the func function at most once per every wait milliseconds. Subsequent calls to the throttled function will return the result of the last func call.
- Parameters:
func – Function to throttle.
wait – Milliseconds to wait before calling func again.
- Returns:
Results of last func call.
New in version 1.0.0.
- pydash.functions.unary(func: Callable[[...], T]) Ary[T] [source]#
Creates a function that accepts up to one argument, ignoring any additional arguments.
- Parameters:
func – Function to cap arguments for.
- Returns:
Function wrapped in an
Ary
context.
Example
>>> func = lambda a, b=1, c=0, d=5: (a, b, c, d) >>> unary_func = unary(func) >>> unary_func(1, 2, 3, 4, 5, 6) (1, 1, 0, 5) >>> unary_func(1, 2, 3, 4, 5, 6, b=0, c=10, d=20) (1, 0, 10, 20)
New in version 4.0.0.
- pydash.functions.wrap(value: T1, func: Callable[[Concatenate[T1, P]], T]) Partial[T] [source]#
Creates a function that provides value to the wrapper function as its first argument. Additional arguments provided to the function are appended to those provided to the wrapper function.
- Parameters:
value – Value provided as first argument to function call.
func – Function to execute.
- Returns:
Function wrapped in a
Partial
context.
Example
>>> wrapper = wrap('hello', lambda *args: args) >>> wrapper(1, 2) ('hello', 1, 2)
New in version 1.0.0.
Numerical#
Numerical/mathematical related functions.
New in version 2.1.0.
- pydash.numerical.add(a: SupportsAdd[T, T2], b: T) T2 [source]#
- pydash.numerical.add(a: T, b: SupportsAdd[T, T2]) T2
Adds two numbers.
- Parameters:
a – First number to add.
b – Second number to add.
- Returns:
number
Example
>>> add(10, 5) 15
New in version 2.1.0.
Changed in version 3.3.0: Support adding two numbers when passed as positional arguments.
Changed in version 4.0.0: Only support two argument addition.
- pydash.numerical.ceil(x: float | int | Decimal, precision: int = 0) float [source]#
Round number up to precision.
- Parameters:
x – Number to round up.
precision – Rounding precision. Defaults to
0
.
- Returns:
Number rounded up.
Example
>>> ceil(3.275) == 4.0 True >>> ceil(3.215, 1) == 3.3 True >>> ceil(6.004, 2) == 6.01 True
New in version 3.3.0.
- pydash.numerical.clamp(x: NumT, lower: NumT2, upper: NumT3 | None = None) NumT | NumT2 | NumT3 [source]#
Clamps number within the inclusive lower and upper bounds.
- Parameters:
x – Number to clamp.
lower – Lower bound.
upper – Upper bound
- Returns:
number
Example
>>> clamp(-10, -5, 5) -5 >>> clamp(10, -5, 5) 5 >>> clamp(10, 5) 5 >>> clamp(-10, 5) -10
New in version 4.0.0.
- pydash.numerical.divide(dividend: float | int | Decimal | None, divisor: float | int | Decimal | None) float [source]#
Divide two numbers.
- Parameters:
dividend – The first number in a division.
divisor – The second number in a division.
- Returns:
Returns the quotient.
Example
>>> divide(20, 5) 4.0 >>> divide(1.5, 3) 0.5 >>> divide(None, None) 1.0 >>> divide(5, None) 5.0
New in version 4.0.0.
- pydash.numerical.floor(x: float | int | Decimal, precision: int = 0) float [source]#
Round number down to precision.
- Parameters:
x – Number to round down.
precision – Rounding precision. Defaults to
0
.
- Returns:
Number rounded down.
Example
>>> floor(3.75) == 3.0 True >>> floor(3.215, 1) == 3.2 True >>> floor(0.046, 2) == 0.04 True
New in version 3.3.0.
- pydash.numerical.max_(collection: t.Mapping[t.Any, 'SupportsRichComparisonT'], default: Unset = UNSET) SupportsRichComparisonT [source]#
- pydash.numerical.max_(collection: t.Mapping[t.Any, 'SupportsRichComparisonT'], default: T) t.Union['SupportsRichComparisonT', T]
- pydash.numerical.max_(collection: t.Iterable['SupportsRichComparisonT'], default: Unset = UNSET) SupportsRichComparisonT
- pydash.numerical.max_(collection: t.Iterable['SupportsRichComparisonT'], default: T) t.Union['SupportsRichComparisonT', T]
Retrieves the maximum value of a collection.
- Parameters:
collection – Collection to iterate over.
default – Value to return if collection is empty.
- Returns:
Maximum value.
Example
>>> max_([1, 2, 3, 4]) 4 >>> max_([], default=-1) -1
New in version 1.0.0.
Changed in version 4.0.0: Moved iteratee iteratee support to
max_by()
.
- pydash.numerical.max_by(collection: t.Mapping[t.Any, 'SupportsRichComparisonT'], iteratee: None = None, default: Unset = UNSET) SupportsRichComparisonT [source]#
- pydash.numerical.max_by(collection: Mapping[Any, T2], iteratee: t.Callable[[T2], 'SupportsRichComparisonT'], default: Unset = UNSET) T2
- pydash.numerical.max_by(collection: Mapping[Any, T2], iteratee: t.Callable[[T2], 'SupportsRichComparisonT'], *, default: T) T2 | T
- pydash.numerical.max_by(collection: t.Mapping[t.Any, 'SupportsRichComparisonT'], iteratee: None = None, *, default: T) t.Union['SupportsRichComparisonT', T]
- pydash.numerical.max_by(collection: t.Iterable['SupportsRichComparisonT'], iteratee: None = None, default: Unset = UNSET) SupportsRichComparisonT
- pydash.numerical.max_by(collection: Iterable[T2], iteratee: t.Callable[[T2], 'SupportsRichComparisonT'], default: Unset = UNSET) T2
- pydash.numerical.max_by(collection: Iterable[T2], iteratee: t.Callable[[T2], 'SupportsRichComparisonT'], *, default: T) T2 | T
- pydash.numerical.max_by(collection: t.Iterable['SupportsRichComparisonT'], iteratee: None = None, *, default: T) t.Union['SupportsRichComparisonT', T]
- pydash.numerical.max_by(collection: Iterable[T], iteratee: int | str | List | Tuple | Dict, default: Unset = UNSET) T
- pydash.numerical.max_by(collection: Iterable[T], iteratee: int | str | List | Tuple | Dict, default: T2) T | T2
Retrieves the maximum value of a collection.
- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
default – Value to return if collection is empty.
- Returns:
Maximum value.
Example
>>> max_by([1.0, 1.5, 1.8], math.floor) 1.0 >>> max_by([{'a': 1}, {'a': 2}, {'a': 3}], 'a') {'a': 3} >>> max_by([], default=-1) -1
New in version 4.0.0.
- pydash.numerical.mean(collection: t.Mapping[t.Any, 'SupportsAdd[int, t.Any]']) float [source]#
- pydash.numerical.mean(collection: t.Iterable['SupportsAdd[int, t.Any]']) float
Calculate arithmetic mean of each element in collection.
- Parameters:
collection – Collection to process.
- Returns:
Result of mean.
Example
>>> mean([1, 2, 3, 4]) 2.5
New in version 2.1.0.
Changed in version 4.0.0:
Removed
average
andavg
aliases.Moved iteratee functionality to
mean_by()
.
- pydash.numerical.mean_by(collection: Mapping[T, T2], iteratee: t.Callable[[T2, T, t.Dict[T, T2]], 'SupportsAdd[int, t.Any]']) float [source]#
- pydash.numerical.mean_by(collection: Mapping[T, T2], iteratee: t.Callable[[T2, T], 'SupportsAdd[int, t.Any]']) float
- pydash.numerical.mean_by(collection: Mapping[Any, T2], iteratee: t.Callable[[T2], 'SupportsAdd[int, t.Any]']) float
- pydash.numerical.mean_by(collection: Iterable[T], iteratee: t.Callable[[T, int, t.List[T]], 'SupportsAdd[int, t.Any]']) float
- pydash.numerical.mean_by(collection: Iterable[T], iteratee: t.Callable[[T, int], 'SupportsAdd[int, t.Any]']) float
- pydash.numerical.mean_by(collection: Iterable[T], iteratee: t.Callable[[T], 'SupportsAdd[int, t.Any]']) float
- pydash.numerical.mean_by(collection: t.Mapping[t.Any, 'SupportsAdd[int, t.Any]'], iteratee: None = None) float
- pydash.numerical.mean_by(collection: t.Iterable['SupportsAdd[int, t.Any]'], iteratee: None = None) float
Calculate arithmetic mean of each element in collection. If iteratee is passed, each element of collection is passed through an iteratee before the mean is computed.
- Parameters:
collection – Collection to process.
iteratee – Iteratee applied per iteration.
- Returns:
Result of mean.
Example
>>> mean_by([1, 2, 3, 4], lambda x: x ** 2) 7.5
New in version 4.0.0.
- pydash.numerical.median(collection: Mapping[T, T2], iteratee: t.Callable[[T2, T, t.Dict[T, T2]], NumberT]) float | int [source]#
- pydash.numerical.median(collection: Mapping[T, T2], iteratee: t.Callable[[T2, T], NumberT]) float | int
- pydash.numerical.median(collection: Mapping[Any, T2], iteratee: t.Callable[[T2], NumberT]) float | int
- pydash.numerical.median(collection: Iterable[T], iteratee: t.Callable[[T, int, t.List[T]], NumberT]) float | int
- pydash.numerical.median(collection: Iterable[T], iteratee: t.Callable[[T, int], NumberT]) float | int
- pydash.numerical.median(collection: Iterable[T], iteratee: t.Callable[[T], NumberT]) float | int
- pydash.numerical.median(collection: t.Iterable[NumberT], iteratee: None = None) float | int
Calculate median of each element in collection. If iteratee is passed, each element of collection is passed through an iteratee before the median is computed.
- Parameters:
collection – Collection to process.
iteratee – Iteratee applied per iteration.
- Returns:
Result of median.
Example
>>> median([1, 2, 3, 4, 5]) 3 >>> median([1, 2, 3, 4]) 2.5
New in version 2.1.0.
- pydash.numerical.min_(collection: t.Mapping[t.Any, 'SupportsRichComparisonT'], default: Unset = UNSET) SupportsRichComparisonT [source]#
- pydash.numerical.min_(collection: t.Mapping[t.Any, 'SupportsRichComparisonT'], default: T) t.Union['SupportsRichComparisonT', T]
- pydash.numerical.min_(collection: t.Iterable['SupportsRichComparisonT'], default: Unset = UNSET) SupportsRichComparisonT
- pydash.numerical.min_(collection: t.Iterable['SupportsRichComparisonT'], default: T) t.Union['SupportsRichComparisonT', T]
Retrieves the minimum value of a collection.
- Parameters:
collection – Collection to iterate over.
default – Value to return if collection is empty.
- Returns:
Minimum value.
Example
>>> min_([1, 2, 3, 4]) 1 >>> min_([], default=100) 100
New in version 1.0.0.
Changed in version 4.0.0: Moved iteratee iteratee support to
min_by()
.
- pydash.numerical.min_by(collection: t.Mapping[t.Any, 'SupportsRichComparisonT'], iteratee: None = None, default: Unset = UNSET) SupportsRichComparisonT [source]#
- pydash.numerical.min_by(collection: Mapping[Any, T2], iteratee: t.Callable[[T2], 'SupportsRichComparisonT'], default: Unset = UNSET) T2
- pydash.numerical.min_by(collection: Mapping[Any, T2], iteratee: t.Callable[[T2], 'SupportsRichComparisonT'], *, default: T) T2 | T
- pydash.numerical.min_by(collection: t.Mapping[t.Any, 'SupportsRichComparisonT'], iteratee: None = None, *, default: T) t.Union['SupportsRichComparisonT', T]
- pydash.numerical.min_by(collection: t.Iterable['SupportsRichComparisonT'], iteratee: None = None, default: Unset = UNSET) SupportsRichComparisonT
- pydash.numerical.min_by(collection: Iterable[T2], iteratee: t.Callable[[T2], 'SupportsRichComparisonT'], default: Unset = UNSET) T2
- pydash.numerical.min_by(collection: Iterable[T2], iteratee: t.Callable[[T2], 'SupportsRichComparisonT'], *, default: T) T2 | T
- pydash.numerical.min_by(collection: t.Iterable['SupportsRichComparisonT'], iteratee: None = None, *, default: T) t.Union['SupportsRichComparisonT', T]
- pydash.numerical.min_by(collection: Iterable[T], iteratee: int | str | List | Tuple | Dict, default: Unset = UNSET) T
- pydash.numerical.min_by(collection: Iterable[T], iteratee: int | str | List | Tuple | Dict, default: T2) T | T2
Retrieves the minimum value of a collection.
- Parameters:
collection – Collection to iterate over.
iteratee – Iteratee applied per iteration.
default – Value to return if collection is empty.
- Returns:
Minimum value.
Example
>>> min_by([1.8, 1.5, 1.0], math.floor) 1.8 >>> min_by([{'a': 1}, {'a': 2}, {'a': 3}], 'a') {'a': 1} >>> min_by([], default=100) 100
New in version 4.0.0.
- pydash.numerical.moving_mean(array: Sequence[SupportsAdd[int, t.Any]], size: SupportsInt) List[float] [source]#
Calculate moving mean of each element of array.
- Parameters:
array – List to process.
size – Window size.
- Returns:
Result of moving average.
Example
>>> moving_mean(range(10), 1) [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0] >>> moving_mean(range(10), 5) [2.0, 3.0, 4.0, 5.0, 6.0, 7.0] >>> moving_mean(range(10), 10) [4.5]
New in version 2.1.0.
Changed in version 4.0.0: Rename to
moving_mean
and removemoving_average
andmoving_avg
aliases.
- pydash.numerical.multiply(multiplier: SupportsMul[int, T2], multiplicand: None) T2 [source]#
- pydash.numerical.multiply(multiplier: None, multiplicand: SupportsMul[int, T2]) T2
- pydash.numerical.multiply(multiplier: None, multiplicand: None) int
- pydash.numerical.multiply(multiplier: SupportsMul[T, T2], multiplicand: T) T2
- pydash.numerical.multiply(multiplier: T, multiplicand: SupportsMul[T, T2]) T2
Multiply two numbers.
- Parameters:
multiplier – The first number in a multiplication.
multiplicand – The second number in a multiplication.
- Returns:
Returns the product.
Example
>>> multiply(4, 5) 20 >>> multiply(10, 4) 40 >>> multiply(None, 10) 10 >>> multiply(None, None) 1
New in version 4.0.0.
- pydash.numerical.power(x: int, n: int) int | float [source]#
- pydash.numerical.power(x: float, n: int | float) float
- pydash.numerical.power(x: List[int], n: int) List[int | float]
- pydash.numerical.power(x: List[float], n: List[int | float]) List[float]
Calculate exponentiation of x raised to the n power.
- Parameters:
x – Base number.
n – Exponent.
- Returns:
Result of calculation.
Example
>>> power(5, 2) 25 >>> power(12.5, 3) 1953.125
New in version 2.1.0.
Changed in version 4.0.0: Removed alias
pow_
.
- pydash.numerical.round_(x: t.List[SupportsRound[NumberT]], precision: int = 0) List[float] [source]#
- pydash.numerical.round_(x: SupportsRound[NumberT], precision: int = 0) float
Round number to precision.
- Parameters:
x – Number to round.
precision – Rounding precision. Defaults to
0
.
- Returns:
Rounded number.
Example
>>> round_(3.275) == 3.0 True >>> round_(3.275, 1) == 3.3 True
New in version 2.1.0.
Changed in version 4.0.0: Remove alias
curve
.
- pydash.numerical.scale(array: t.Iterable['Decimal'], maximum: Decimal) t.List['Decimal'] [source]#
- pydash.numerical.scale(array: Iterable[float | int], maximum: float | int) List[float]
- pydash.numerical.scale(array: t.Iterable[NumberT], maximum: int = 1) List[float]
Scale list of value to a maximum number.
- Parameters:
array – Numbers to scale.
maximum – Maximum scale value.
- Returns:
Scaled numbers.
Example
>>> scale([1, 2, 3, 4]) [0.25, 0.5, 0.75, 1.0] >>> scale([1, 2, 3, 4], 1) [0.25, 0.5, 0.75, 1.0] >>> scale([1, 2, 3, 4], 4) [1.0, 2.0, 3.0, 4.0] >>> scale([1, 2, 3, 4], 2) [0.5, 1.0, 1.5, 2.0]
New in version 2.1.0.
- pydash.numerical.slope(point1: t.Union[t.Tuple['Decimal', 'Decimal'], t.List['Decimal']], point2: t.Union[t.Tuple['Decimal', 'Decimal'], t.List['Decimal']]) Decimal [source]#
- pydash.numerical.slope(point1: Tuple[float | int, float | int] | List[int | float], point2: Tuple[float | int, float | int] | List[int | float]) float
Calculate the slope between two points.
- Parameters:
point1 – X and Y coordinates of first point.
point2 – X and Y cooredinates of second point.
- Returns:
Calculated slope.
Example
>>> slope((1, 2), (4, 8)) 2.0
New in version 2.1.0.
- pydash.numerical.std_deviation(array: List[float | int | Decimal]) float [source]#
Calculate standard deviation of list of numbers.
- Parameters:
array – List to process.
- Returns:
Calculated standard deviation.
Example
>>> round(std_deviation([1, 18, 20, 4]), 2) == 8.35 True
New in version 2.1.0.
Changed in version 4.0.0: Remove alias
sigma
.
- pydash.numerical.subtract(minuend: SupportsSub[T, T2], subtrahend: T) T2 [source]#
- pydash.numerical.subtract(minuend: T, subtrahend: SupportsSub[T, T2]) T2
Subtracts two numbers.
- Parameters:
minuend – Value passed in by the user.
subtrahend – Value passed in by the user.
- Returns:
Result of the difference from the given values.
Example
>>> subtract(10, 5) 5 >>> subtract(-10, 4) -14 >>> subtract(2, 0.5) 1.5
New in version 4.0.0.
- pydash.numerical.sum_(collection: t.Mapping[t.Any, 'SupportsAdd[int, T]']) T [source]#
- pydash.numerical.sum_(collection: t.Iterable['SupportsAdd[int, T]']) T
Sum each element in collection.
- Parameters:
collection – Collection to process or first number to add.
- Returns:
Result of summation.
Example
>>> sum_([1, 2, 3, 4]) 10
New in version 2.1.0.
Changed in version 3.3.0: Support adding two numbers when passed as positional arguments.
- pydash.numerical.sum_by(collection: Mapping[T, T2], iteratee: t.Callable[[T2, T, t.Dict[T, T2]], 'SupportsAdd[int, T3]']) T3 [source]#
- pydash.numerical.sum_by(collection: Mapping[T, T2], iteratee: t.Callable[[T2, T], 'SupportsAdd[int, T3]']) T3
- pydash.numerical.sum_by(collection: Mapping[Any, T2], iteratee: t.Callable[[T2], 'SupportsAdd[int, T3]']) T3
- pydash.numerical.sum_by(collection: Iterable[T], iteratee: t.Callable[[T, int, t.List[T]], 'SupportsAdd[int, T2]']) T2
- pydash.numerical.sum_by(collection: Iterable[T], iteratee: t.Callable[[T, int], 'SupportsAdd[int, T2]']) T2
- pydash.numerical.sum_by(collection: Iterable[T], iteratee: t.Callable[[T], 'SupportsAdd[int, T2]']) T2
- pydash.numerical.sum_by(collection: t.Mapping[t.Any, 'SupportsAdd[int, T]'], iteratee: None = None) T
- pydash.numerical.sum_by(collection: t.Iterable['SupportsAdd[int, T]'], iteratee: None = None) T
Sum each element in collection. If iteratee is passed, each element of collection is passed through an iteratee before the summation is computed.
- Parameters:
collection – Collection to process or first number to add.
iteratee – Iteratee applied per iteration or second number to add.
- Returns:
Result of summation.
Example
>>> sum_by([1, 2, 3, 4], lambda x: x ** 2) 30
New in version 4.0.0.
- pydash.numerical.transpose(array: Iterable[Iterable[T]]) List[List[T]] [source]#
Transpose the elements of array.
- Parameters:
array – List to process.
- Returns:
Transposed list.
Example
>>> transpose([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
New in version 2.1.0.
- pydash.numerical.variance(array: t.Mapping[t.Any, 'SupportsAdd[int, t.Any]']) float [source]#
- pydash.numerical.variance(array: t.Iterable['SupportsAdd[int, t.Any]']) float
Calculate the variance of the elements in array.
- Parameters:
array – List to process.
- Returns:
Calculated variance.
Example
>>> variance([1, 18, 20, 4]) 69.6875
New in version 2.1.0.
- pydash.numerical.zscore(collection: Mapping[T, T2], iteratee: t.Callable[[T2, T, t.Dict[T, T2]], NumberT]) List[float] [source]#
- pydash.numerical.zscore(collection: Mapping[T, T2], iteratee: t.Callable[[T2, T], NumberT]) List[float]
- pydash.numerical.zscore(collection: Mapping[Any, T2], iteratee: t.Callable[[T2], NumberT]) List[float]
- pydash.numerical.zscore(collection: Iterable[T], iteratee: t.Callable[[T, int, t.List[T]], NumberT]) List[float]
- pydash.numerical.zscore(collection: Iterable[T], iteratee: t.Callable[[T, int], NumberT]) List[float]
- pydash.numerical.zscore(collection: Iterable[T], iteratee: t.Callable[[T], NumberT]) List[float]
- pydash.numerical.zscore(collection: t.Iterable[NumberT], iteratee: None = None) List[float]
Calculate the standard score assuming normal distribution. If iteratee is passed, each element of collection is passed through an iteratee before the standard score is computed.
- Parameters:
collection – Collection to process.
iteratee – Iteratee applied per iteration.
- Returns:
Calculated standard score.
Example
>>> results = zscore([1, 2, 3])
# [-1.224744871391589, 0.0, 1.224744871391589]
New in version 2.1.0.
Objects#
Functions that operate on lists, dicts, and other objects.
New in version 1.0.0.
- pydash.objects.assign(obj: Mapping[T, T2], *sources: Mapping[T3, T4]) Dict[T | T3, T2 | T4] [source]#
- pydash.objects.assign(obj: Tuple[T, ...] | List[T], *sources: Mapping[int, T2]) List[T | T2]
Assigns properties of source object(s) to the destination object.
- Parameters:
obj – Destination object whose properties will be modified.
sources – Source objects to assign to obj.
- Returns:
Modified obj.
Warning
obj is modified in place.
Example
>>> obj = {} >>> obj2 = assign(obj, {'a': 1}, {'b': 2}, {'c': 3}) >>> obj == {'a': 1, 'b': 2, 'c': 3} True >>> obj is obj2 True
New in version 1.0.0.
Changed in version 2.3.2: Apply
clone_deep()
to each source before assigning to obj.Changed in version 3.0.0: Allow iteratees to accept partial arguments.
Changed in version 3.4.4: Shallow copy each source instead of deep copying.
Changed in version 4.0.0:
Moved iteratee argument to
assign_with()
.Removed alias
extend
.
- pydash.objects.assign_with(obj: Mapping[T, T2], *sources: Mapping[T3, Any], customizer: Callable[[T2 | None], T5]) Dict[T | T3, T2 | T5] [source]#
- pydash.objects.assign_with(obj: Mapping[T, T2], *sources: Mapping[T3, T4], customizer: Callable[[T2 | None, T4], T5]) Dict[T | T3, T2 | T5]
- pydash.objects.assign_with(obj: Mapping[T, T2], *sources: Mapping[T3, T4], customizer: Callable[[T2 | None, T4, T3], T5]) Dict[T | T3, T2 | T5]
- pydash.objects.assign_with(obj: Mapping[T, T2], *sources: Mapping[T3, T4], customizer: Callable[[T2 | None, T4, T3, Dict[T, T2]], T5]) Dict[T | T3, T2 | T5]
- pydash.objects.assign_with(obj: Mapping[T, T2], *sources: Mapping[T3, T4], customizer: Callable[[T2 | None, T4, T3, Dict[T, T2], Dict[T3, T4]], T5]) Dict[T | T3, T2 | T5]
- pydash.objects.assign_with(obj: Mapping[T, T2], *sources: Mapping[T3, T4], customizer: None = None) Dict[T | T3, T2 | T4]
This method is like
assign()
except that it accepts customizer which is invoked to produce the assigned values. If customizer returnsNone
, assignment is handled by the method instead. The customizer is invoked with five arguments:(obj_value, src_value, key, obj, source)
.- Parameters:
obj – Destination object whose properties will be modified.
sources – Source objects to assign to obj.
- Keyword Arguments:
customizer – Customizer applied per iteration.
- Returns:
Modified obj.
Warning
obj is modified in place.
Example
>>> customizer = lambda o, s: s if o is None else o >>> results = assign_with({'a': 1}, {'b': 2}, {'a': 3}, customizer) >>> results == {'a': 1, 'b': 2} True
New in version 4.0.0.
- pydash.objects.callables(obj: t.Mapping['SupportsRichComparisonT', t.Any]) t.List['SupportsRichComparisonT'] [source]#
- pydash.objects.callables(obj: Iterable[T]) List[T]
Creates a sorted list of keys of an object that are callable.
- Parameters:
obj – Object to inspect.
- Returns:
All keys whose values are callable.
Example
>>> callables({'a': 1, 'b': lambda: 2, 'c': lambda: 3}) ['b', 'c']
New in version 1.0.0.
Changed in version 2.0.0: Renamed
functions
tocallables
.Changed in version 4.0.0: Removed alias
methods
.
- pydash.objects.clone(value: T) T [source]#
Creates a clone of value.
- Parameters:
value – Object to clone.
Example
>>> x = {'a': 1, 'b': 2, 'c': {'d': 3}} >>> y = clone(x) >>> y == y True >>> x is y False >>> x['c'] is y['c'] True
- Returns:
Cloned object.
New in version 1.0.0.
Changed in version 4.0.0: Moved ‘iteratee’ parameter to
clone_with()
.
- pydash.objects.clone_deep(value: T) T [source]#
Creates a deep clone of value. If an iteratee is provided it will be executed to produce the cloned values.
- Parameters:
value – Object to clone.
- Returns:
Cloned object.
Example
>>> x = {'a': 1, 'b': 2, 'c': {'d': 3}} >>> y = clone_deep(x) >>> y == y True >>> x is y False >>> x['c'] is y['c'] False
New in version 1.0.0.
Changed in version 4.0.0: Moved ‘iteratee’ parameter to
clone_deep_with()
.
- pydash.objects.clone_deep_with(value: Mapping[T, T2], customizer: Callable[[T2, T, Mapping[T, T2]], T3]) Dict[T, T2 | T3] [source]#
- pydash.objects.clone_deep_with(value: Mapping[T, T2], customizer: Callable[[T2, T], T3]) Dict[T, T2 | T3]
- pydash.objects.clone_deep_with(value: Mapping[T, T2], customizer: Callable[[T2], T3]) Dict[T, T2 | T3]
- pydash.objects.clone_deep_with(value: List[T], customizer: Callable[[T, int, List[T]], T2]) List[T | T2]
- pydash.objects.clone_deep_with(value: List[T], customizer: Callable[[T, int], T2]) List[T | T2]
- pydash.objects.clone_deep_with(value: List[T], customizer: Callable[[T], T2]) List[T | T2]
- pydash.objects.clone_deep_with(value: T, customizer: None = None) T
- pydash.objects.clone_deep_with(value: Any, customizer: Callable) Any
This method is like
clone_with()
except that it recursively clones value.- Parameters:
value – Object to clone.
customizer – Function to customize cloning.
- Returns:
Cloned object.
- pydash.objects.clone_with(value: Mapping[T, T2], customizer: Callable[[T2, T, Mapping[T, T2]], T3]) Dict[T, T2 | T3] [source]#
- pydash.objects.clone_with(value: Mapping[T, T2], customizer: Callable[[T2, T], T3]) Dict[T, T2 | T3]
- pydash.objects.clone_with(value: Mapping[T, T2], customizer: Callable[[T2], T3]) Dict[T, T2 | T3]
- pydash.objects.clone_with(value: List[T], customizer: Callable[[T, int, List[T]], T2]) List[T | T2]
- pydash.objects.clone_with(value: List[T], customizer: Callable[[T, int], T2]) List[T | T2]
- pydash.objects.clone_with(value: List[T], customizer: Callable[[T], T2]) List[T | T2]
- pydash.objects.clone_with(value: T, customizer: None = None) T
- pydash.objects.clone_with(value: Any, customizer: Callable) Any
This method is like
clone()
except that it accepts customizer which is invoked to produce the cloned value. If customizer returnsNone
, cloning is handled by the method instead. The customizer is invoked with up to three arguments:(value, index|key, object)
.- Parameters:
value – Object to clone.
customizer – Function to customize cloning.
- Returns:
Cloned object.
Example
>>> x = {'a': 1, 'b': 2, 'c': {'d': 3}} >>> cbk = lambda v, k: v + 2 if isinstance(v, int) and k else None >>> y = clone_with(x, cbk) >>> y == {'a': 3, 'b': 4, 'c': {'d': 3}} True
- pydash.objects.defaults(obj: Dict[T, T2], *sources: Dict[T3, T4]) Dict[T | T3, T2 | T4] [source]#
Assigns properties of source object(s) to the destination object for all destination properties that resolve to undefined.
- Parameters:
obj – Destination object whose properties will be modified.
sources – Source objects to assign to obj.
- Returns:
Modified obj.
Warning
obj is modified in place.
Example
>>> obj = {'a': 1} >>> obj2 = defaults(obj, {'b': 2}, {'c': 3}, {'a': 4}) >>> obj is obj2 True >>> obj == {'a': 1, 'b': 2, 'c': 3} True
New in version 1.0.0.
- pydash.objects.defaults_deep(obj: Dict[T, T2], *sources: Dict[T3, T4]) Dict[T | T3, T2 | T4] [source]#
This method is like
defaults()
except that it recursively assigns default properties.- Parameters:
obj – Destination object whose properties will be modified.
sources – Source objects to assign to obj.
- Returns:
Modified obj.
Warning
obj is modified in place.
Example
>>> obj = {'a': {'b': 1}} >>> obj2 = defaults_deep(obj, {'a': {'b': 2, 'c': 3}}) >>> obj is obj2 True >>> obj == {'a': {'b': 1, 'c': 3}} True
New in version 3.3.0.
- pydash.objects.find_key(obj: Mapping[T, T2], predicate: Callable[[T2, T, Dict[T, T2]], Any]) T | None [source]#
- pydash.objects.find_key(obj: Mapping[T, T2], predicate: Callable[[T2, T], Any]) T | None
- pydash.objects.find_key(obj: Mapping[T, T2], predicate: Callable[[T2], Any]) T | None
- pydash.objects.find_key(obj: Mapping[T, Any], predicate: None = None) T | None
- pydash.objects.find_key(collection: Iterable[T], iteratee: Callable[[T, int, List[T]], Any]) int | None
- pydash.objects.find_key(collection: Iterable[T], iteratee: Callable[[T, int], Any]) int | None
- pydash.objects.find_key(collection: Iterable[T], iteratee: Callable[[T], Any]) int | None
- pydash.objects.find_key(collection: Iterable[Any], iteratee: None = None) int | None
This method is like
pydash.arrays.find_index()
except that it returns the key of the first element that passes the predicate check, instead of the element itself.- Parameters:
obj – Object to search.
predicate – Predicate applied per iteration.
- Returns:
Found key or
None
.
Example
>>> find_key({'a': 1, 'b': 2, 'c': 3}, lambda x: x == 1) 'a' >>> find_key([1, 2, 3, 4], lambda x: x == 1) 0
New in version 1.0.0.
- pydash.objects.find_last_key(obj: Mapping[T, T2], predicate: Callable[[T2, T, Dict[T, T2]], Any]) T | None [source]#
- pydash.objects.find_last_key(obj: Mapping[T, T2], predicate: Callable[[T2, T], Any]) T | None
- pydash.objects.find_last_key(obj: Mapping[T, T2], predicate: Callable[[T2], Any]) T | None
- pydash.objects.find_last_key(obj: Mapping[T, Any], predicate: None = None) T | None
- pydash.objects.find_last_key(collection: Iterable[T], iteratee: Callable[[T, int, List[T]], Any]) int | None
- pydash.objects.find_last_key(collection: Iterable[T], iteratee: Callable[[T, int], Any]) int | None
- pydash.objects.find_last_key(collection: Iterable[T], iteratee: Callable[[T], Any]) int | None
- pydash.objects.find_last_key(collection: Iterable[Any], iteratee: None = None) int | None
This method is like
find_key()
except that it iterates over elements of a collection in the opposite order.- Parameters:
obj – Object to search.
predicate – Predicate applied per iteration.
- Returns:
Found key or
None
.
Example
>>> find_last_key({'a': 1, 'b': 2, 'c': 3}, lambda x: x == 1) 'a' >>> find_last_key([1, 2, 3, 1], lambda x: x == 1) 3
Changed in version 4.0.0: Made into its own function (instead of an alias of
find_key
) with proper reverse find implementation.
- pydash.objects.for_in(obj: Mapping[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], Any]) Dict[T, T2] [source]#
- pydash.objects.for_in(obj: Mapping[T, T2], iteratee: Callable[[T2, T], Any]) Dict[T, T2]
- pydash.objects.for_in(obj: Mapping[T, T2], iteratee: Callable[[T2], Any]) Dict[T, T2]
- pydash.objects.for_in(obj: Mapping[T, T2], iteratee: None = None) Dict[T, T2]
- pydash.objects.for_in(obj: Sequence[T], iteratee: Callable[[T, int, List[T]], Any]) List[T]
- pydash.objects.for_in(obj: Sequence[T], iteratee: Callable[[T, int], Any]) List[T]
- pydash.objects.for_in(obj: Sequence[T], iteratee: Callable[[T], Any]) List[T]
- pydash.objects.for_in(obj: Sequence[T], iteratee: None = None) List[T]
Iterates over own and inherited enumerable properties of obj, executing iteratee for each property.
- Parameters:
obj – Object to process.
iteratee – Iteratee applied per iteration.
- Returns:
obj.
Example
>>> obj = {} >>> def cb(v, k): obj[k] = v >>> results = for_in({'a': 1, 'b': 2, 'c': 3}, cb) >>> results == {'a': 1, 'b': 2, 'c': 3} True >>> obj == {'a': 1, 'b': 2, 'c': 3} True
New in version 1.0.0.
Changed in version 4.0.0: Removed alias
for_own
.
- pydash.objects.for_in_right(obj: Mapping[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], Any]) Dict[T, T2] [source]#
- pydash.objects.for_in_right(obj: Mapping[T, T2], iteratee: Callable[[T2, T], Any]) Dict[T, T2]
- pydash.objects.for_in_right(obj: Mapping[T, T2], iteratee: Callable[[T2], Any]) Dict[T, T2]
- pydash.objects.for_in_right(obj: Mapping[T, T2], iteratee: None = None) Dict[T, T2]
- pydash.objects.for_in_right(obj: Sequence[T], iteratee: Callable[[T, int, List[T]], Any]) List[T]
- pydash.objects.for_in_right(obj: Sequence[T], iteratee: Callable[[T, int], Any]) List[T]
- pydash.objects.for_in_right(obj: Sequence[T], iteratee: Callable[[T], Any]) List[T]
- pydash.objects.for_in_right(obj: Sequence[T], iteratee: None = None) List[T]
This function is like
for_in()
except it iterates over the properties in reverse order.- Parameters:
obj – Object to process.
iteratee – Iteratee applied per iteration.
- Returns:
obj.
Example
>>> data = {'product': 1} >>> def cb(v): data['product'] *= v >>> for_in_right([1, 2, 3, 4], cb) [1, 2, 3, 4] >>> data['product'] == 24 True
New in version 1.0.0.
Changed in version 4.0.0: Removed alias
for_own_right
.
- pydash.objects.get(obj: List[T], path: int, default: T2) T | T2 [source]#
- pydash.objects.get(obj: List[T], path: int, default: None = None) T | None
- pydash.objects.get(obj: Any, path: Hashable | List[Hashable], default: Any = None) Any
Get the value at any depth of a nested object based on the path described by path. If path doesn’t exist, default is returned.
- Parameters:
obj – Object to process.
path – List or
.
delimited string of path describing path.default – Default value to return if path doesn’t exist. Defaults to
None
.
- Returns:
Value of obj at path.
Example
>>> get({}, 'a.b.c') is None True >>> get({'a': {'b': {'c': [1, 2, 3, 4]}}}, 'a.b.c[1]') 2 >>> get({'a': {'b': {'c': [1, 2, 3, 4]}}}, 'a.b.c.1') 2 >>> get({'a': {'b': [0, {'c': [1, 2]}]}}, 'a.b.1.c.1') 2 >>> get({'a': {'b': [0, {'c': [1, 2]}]}}, ['a', 'b', 1, 'c', 1]) 2 >>> get({'a': {'b': [0, {'c': [1, 2]}]}}, 'a.b.1.c.2') is None True
New in version 2.0.0.
Changed in version 2.2.0: Support escaping “.” delimiter in single string path key.
Changed in version 3.3.0:
Added
get()
as main definition andget_path()
as alias.Made
deep_get()
an alias.
Changed in version 3.4.7: Fixed bug where an iterable default was iterated over instead of being returned when an object path wasn’t found.
Changed in version 4.0.0:
Support attribute access on obj if item access fails.
Removed aliases
get_path
anddeep_get
.
Changed in version 4.7.6: Fixed bug where getattr is used on Mappings and Sequence in Python 3.5+
- pydash.objects.has(obj: Any, path: Hashable | List[Hashable]) bool [source]#
Checks if path exists as a key of obj.
- Parameters:
obj – Object to test.
path – Path to test for. Can be a list of nested keys or a
.
delimited string of path describing the path.
- Returns:
Whether obj has path.
Example
>>> has([1, 2, 3], 1) True >>> has({'a': 1, 'b': 2}, 'b') True >>> has({'a': 1, 'b': 2}, 'c') False >>> has({'a': {'b': [0, {'c': [1, 2]}]}}, 'a.b.1.c.1') True >>> has({'a': {'b': [0, {'c': [1, 2]}]}}, 'a.b.1.c.2') False
New in version 1.0.0.
Changed in version 3.0.0: Return
False
onValueError
when checking path.Changed in version 3.3.0:
Added
deep_has()
as alias.Added
has_path()
as alias.
Changed in version 4.0.0: Removed aliases
deep_has
andhas_path
.
- pydash.objects.invert(obj: Mapping[T, T2]) Dict[T2, T] [source]#
- pydash.objects.invert(obj: Iterable[T]) Dict[T, int]
Creates an object composed of the inverted keys and values of the given object.
- Parameters:
obj – Dict to invert.
- Returns:
Inverted dict.
Example
>>> results = invert({'a': 1, 'b': 2, 'c': 3}) >>> results == {1: 'a', 2: 'b', 3: 'c'} True
Note
Assumes obj values are hashable as
dict
keys.New in version 1.0.0.
Changed in version 2.0.0: Added
multivalue
argument.Changed in version 4.0.0: Moved
multivalue=True
functionality toinvert_by()
.
- pydash.objects.invert_by(obj: Mapping[T, T2], iteratee: Callable[[T2], T3]) Dict[T3, List[T]] [source]#
- pydash.objects.invert_by(obj: Mapping[T, T2], iteratee: None = None) Dict[T2, List[T]]
- pydash.objects.invert_by(obj: Iterable[T], iteratee: Callable[[T], T2]) Dict[T2, List[int]]
- pydash.objects.invert_by(obj: Iterable[T], iteratee: None = None) Dict[T, List[int]]
This method is like
invert()
except that the inverted object is generated from the results of running each element of object through iteratee. The corresponding inverted value of each inverted key is a list of keys responsible for generating the inverted value. The iteratee is invoked with one argument:(value)
.- Parameters:
obj – Object to invert.
iteratee – Iteratee applied per iteration.
- Returns:
Inverted dict.
Example
>>> obj = {'a': 1, 'b': 2, 'c': 1} >>> results = invert_by(obj) # {1: ['a', 'c'], 2: ['b']} >>> set(results[1]) == set(['a', 'c']) True >>> set(results[2]) == set(['b']) True >>> results2 = invert_by(obj, lambda value: 'group' + str(value)) >>> results2['group1'] == results[1] True >>> results2['group2'] == results[2] True
Note
Assumes obj values are hashable as
dict
keys.New in version 4.0.0.
- pydash.objects.invoke(obj: Any, path: Hashable | List[Hashable], *args: Any, **kwargs: Any) Any [source]#
Invokes the method at path of object.
- Parameters:
obj – The object to query.
path – The path of the method to invoke.
args – Arguments to pass to method call.
kwargs – Keyword arguments to pass to method call.
- Returns:
Result of the invoked method.
Example
>>> obj = {'a': [{'b': {'c': [1, 2, 3, 4]}}]} >>> invoke(obj, 'a[0].b.c.pop', 1) 2 >>> obj {'a': [{'b': {'c': [1, 3, 4]}}]}
New in version 1.0.0.
- pydash.objects.keys(obj: Iterable[T]) List[T] [source]#
- pydash.objects.keys(obj: Any) List
Creates a list composed of the keys of obj.
- Parameters:
obj – Object to extract keys from.
- Returns:
List of keys.
Example
>>> keys([1, 2, 3]) [0, 1, 2] >>> set(keys({'a': 1, 'b': 2, 'c': 3})) == set(['a', 'b', 'c']) True
New in version 1.0.0.
Changed in version 1.1.0: Added
keys_in
as alias.Changed in version 4.0.0: Removed alias
keys_in
.
- pydash.objects.map_keys(obj: Mapping[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], T3]) Dict[T3, T2] [source]#
- pydash.objects.map_keys(obj: Mapping[T, T2], iteratee: Callable[[T2, T], T3]) Dict[T3, T2]
- pydash.objects.map_keys(obj: Mapping[Any, T2], iteratee: Callable[[T2], T3]) Dict[T3, T2]
- pydash.objects.map_keys(obj: Iterable[T], iteratee: Callable[[T, int, List[T]], T2]) Dict[T2, T]
- pydash.objects.map_keys(obj: Iterable[T], iteratee: Callable[[T, int], T2]) Dict[T2, T]
- pydash.objects.map_keys(obj: Iterable[T], iteratee: Callable[[T], T2]) Dict[T2, T]
- pydash.objects.map_keys(obj: Iterable, iteratee: int | str | List | Tuple | Dict | None = None) Dict
The opposite of
map_values()
, this method creates an object with the same values as object and keys generated by running each own enumerable string keyed property of object through iteratee. The iteratee is invoked with three arguments:(value, key, object)
.- Parameters:
obj – Object to map.
iteratee – Iteratee applied per iteration.
- Returns:
Results of running obj through iteratee.
Example
>>> callback = lambda value, key: key * 2 >>> results = map_keys({'a': 1, 'b': 2, 'c': 3}, callback) >>> results == {'aa': 1, 'bb': 2, 'cc': 3} True
New in version 3.3.0.
- pydash.objects.map_values(obj: Mapping[T, T2], iteratee: Callable[[T2, T, Dict[T, T2]], T3]) Dict[T, T3] [source]#
- pydash.objects.map_values(obj: Mapping[T, T2], iteratee: Callable[[T2, T], T3]) Dict[T, T3]
- pydash.objects.map_values(obj: Mapping[T, T2], iteratee: Callable[[T2], T3]) Dict[T, T3]
- pydash.objects.map_values(obj: Iterable[T], iteratee: Callable[[T, int, List[T]], T2]) Dict[T, T2]
- pydash.objects.map_values(obj: Iterable[T], iteratee: Callable[[T, int], T2]) Dict[T, T2]
- pydash.objects.map_values(obj: Iterable[T], iteratee: Callable[[T], T2]) Dict[T, T2]
- pydash.objects.map_values(obj: Iterable, iteratee: int | str | List | Tuple | Dict | None = None) Dict
Creates an object with the same keys as object and values generated by running each string keyed property of object through iteratee. The iteratee is invoked with three arguments:
(value, key, object)
.- Parameters:
obj – Object to map.
iteratee – Iteratee applied per iteration.
- Returns:
Results of running obj through iteratee.
Example
>>> results = map_values({'a': 1, 'b': 2, 'c': 3}, lambda x: x * 2) >>> results == {'a': 2, 'b': 4, 'c': 6} True >>> results = map_values({'a': 1, 'b': {'d': 4}, 'c': 3}, {'d': 4}) >>> results == {'a': False, 'b': True, 'c': False} True
New in version 1.0.0.
- pydash.objects.map_values_deep(obj: ~typing.Iterable, iteratee: ~typing.Callable | None = None, property_path: ~typing.Any = <pydash.helpers.Unset object>) Any [source]#
Map all non-object values in obj with return values from iteratee. The iteratee is invoked with two arguments:
(obj_value, property_path)
whereproperty_path
contains the list of path keys corresponding to the path ofobj_value
.- Parameters:
obj – Object to map.
iteratee – Iteratee applied to each value.
property_path – Path key(s) to access.
- Returns:
The modified object.
Warning
obj is modified in place.
Example
>>> x = {'a': 1, 'b': {'c': 2}} >>> y = map_values_deep(x, lambda val: val * 2) >>> y == {'a': 2, 'b': {'c': 4}} True >>> z = map_values_deep(x, lambda val, props: props) >>> z == {'a': ['a'], 'b': {'c': ['b', 'c']}} True
Changed in version 3.0.0: Allow iteratees to accept partial arguments.
Changed in version 4.0.0: Renamed from
deep_map_values
tomap_values_deep
.
- pydash.objects.merge(obj: Mapping[T, T2], *sources: Mapping[T3, T4]) Dict[T | T3, T2 | T4] [source]#
- pydash.objects.merge(obj: Sequence[T], *sources: Sequence[T2]) List[T | T2]
Recursively merges properties of the source object(s) into the destination object. Subsequent sources will overwrite property assignments of previous sources.
- Parameters:
obj – Destination object to merge source(s) into.
sources – Source objects to merge from. subsequent sources overwrite previous ones.
- Returns:
Merged object.
Warning
obj is modified in place.
Example
>>> obj = {'a': 2} >>> obj2 = merge(obj, {'a': 1}, {'b': 2, 'c': 3}, {'d': 4}) >>> obj2 == {'a': 1, 'b': 2, 'c': 3, 'd': 4} True >>> obj is obj2 True
New in version 1.0.0.
Changed in version 2.3.2: Apply
clone_deep()
to each source before assigning to obj.Changed in version 2.3.2: Allow iteratee to be passed by reference if it is the last positional argument.
Changed in version 4.0.0: Moved iteratee argument to
merge_with()
.Changed in version 4.9.3: Fixed regression in v4.8.0 that caused exception when obj was
None
.
- pydash.objects.merge_with(obj: Any, *sources: Any, **kwargs: Any) Any [source]#
This method is like
merge()
except that it accepts customizer which is invoked to produce the merged values of the destination and source properties. If customizer returnsNone
, merging is handled by this method instead. The customizer is invoked with five arguments:(obj_value, src_value, key, obj, source)
.- Parameters:
obj – Destination object to merge source(s) into.
sources – Source objects to merge from. subsequent sources overwrite previous ones.
- Keyword Arguments:
iteratee – Iteratee function to handle merging (must be passed in as keyword argument).
- Returns:
Merged object.
Warning
obj is modified in place.
Example
>>> cbk = lambda obj_val, src_val: obj_val + src_val >>> obj1 = {'a': [1], 'b': [2]} >>> obj2 = {'a': [3], 'b': [4]} >>> res = merge_with(obj1, obj2, cbk) >>> obj1 == {'a': [1, 3], 'b': [2, 4]} True
New in version 4.0.0.
Changed in version 4.9.3: Fixed regression in v4.8.0 that caused exception when obj was
None
.
- pydash.objects.omit(obj: Mapping[T, T2], *properties: Hashable | List[Hashable]) Dict[T, T2] [source]#
- pydash.objects.omit(obj: Iterable[T], *properties: Hashable | List[Hashable]) Dict[int, T]
- pydash.objects.omit(obj: Any, *properties: Hashable | List[Hashable]) Dict
The opposite of
pick()
. This method creates an object composed of the property paths of obj that are not omitted.- Parameters:
obj – Object to process.
*properties – Property values to omit.
- Returns:
Results of omitting properties.
Example
>>> omit({'a': 1, 'b': 2, 'c': 3}, 'b', 'c') == {'a': 1} True >>> omit({'a': 1, 'b': 2, 'c': 3 }, ['a', 'c']) == {'b': 2} True >>> omit([1, 2, 3, 4], 0, 3) == {1: 2, 2: 3} True >>> omit({'a': {'b': {'c': 'd'}}}, 'a.b.c') == {'a': {'b': {}}} True
New in version 1.0.0.
Changed in version 4.0.0: Moved iteratee argument to
omit_by()
.Changed in version 4.2.0: Support deep paths.
- pydash.objects.omit_by(obj: Mapping[T, T2], iteratee: Callable[[T2, T], Any]) Dict[T, T2] [source]#
- pydash.objects.omit_by(obj: Mapping[T, T2], iteratee: Callable[[T2], Any]) Dict[T, T2]
- pydash.objects.omit_by(obj: Dict[T, T2], iteratee: None = None) Dict[T, T2]
- pydash.objects.omit_by(obj: Iterable[T], iteratee: Callable[[T, int], Any]) Dict[int, T]
- pydash.objects.omit_by(obj: Iterable[T], iteratee: Callable[[T], Any]) Dict[int, T]
- pydash.objects.omit_by(obj: List[T], iteratee: None = None) Dict[int, T]
- pydash.objects.omit_by(obj: Any, iteratee: Callable | None = None) Dict
The opposite of
pick_by()
. This method creates an object composed of the string keyed properties of object that predicate doesn’t return truthy for. The predicate is invoked with two arguments:(value, key)
.- Parameters:
obj – Object to process.
iteratee – Iteratee used to determine which properties to omit.
- Returns:
Results of omitting properties.
Example
>>> omit_by({'a': 1, 'b': '2', 'c': 3}, lambda v: isinstance(v, int)) {'b': '2'}
New in version 4.0.0.
Changed in version 4.2.0: Support deep paths for iteratee.
- pydash.objects.parse_int(value: Any, radix: int | None = None) int | None [source]#
Converts the given value into an integer of the specified radix. If radix is falsey, a radix of
10
is used unless the value is a hexadecimal, in which case a radix of 16 is used.- Parameters:
value – Value to parse.
radix – Base to convert to.
- Returns:
Integer if parsable else
None
.
Example
>>> parse_int('5') 5 >>> parse_int('12', 8) 10 >>> parse_int('x') is None True
New in version 1.0.0.
- pydash.objects.pick(obj: Mapping[T, T2], *properties: Hashable | List[Hashable]) Dict[T, T2] [source]#
- pydash.objects.pick(obj: Tuple[T, ...] | List[T], *properties: Hashable | List[Hashable]) Dict[int, T]
- pydash.objects.pick(obj: Any, *properties: Hashable | List[Hashable]) Dict
Creates an object composed of the picked object properties.
- Parameters:
obj – Object to pick from.
properties – Property values to pick.
- Returns:
Dict containing picked properties.
Example
>>> pick({'a': 1, 'b': 2, 'c': 3}, 'a', 'b') == {'a': 1, 'b': 2} True
New in version 1.0.0.
Changed in version 4.0.0: Moved iteratee argument to
pick_by()
.
- pydash.objects.pick_by(obj: Mapping[T, T2], iteratee: Callable[[T2], Any]) Dict[T, T2] [source]#
- pydash.objects.pick_by(obj: Mapping[T, T2], iteratee: Callable[[T2, T], Any]) Dict[T, T2]
- pydash.objects.pick_by(obj: Dict[T, T2], iteratee: None = None) Dict[T, T2]
- pydash.objects.pick_by(obj: Tuple[T, ...] | List[T], iteratee: Callable[[T, int], Any]) Dict[int, T]
- pydash.objects.pick_by(obj: Tuple[T, ...] | List[T], iteratee: Callable[[T], Any]) Dict[int, T]
- pydash.objects.pick_by(obj: Tuple[T, ...] | List[T], iteratee: None = None) Dict[int, T]
- pydash.objects.pick_by(obj: Any, iteratee: Callable | None = None) Dict
Creates an object composed of the object properties predicate returns truthy for. The predicate is invoked with two arguments:
(value, key)
.- Parameters:
obj – Object to pick from.
iteratee – Iteratee used to determine which properties to pick.
- Returns:
Dict containing picked properties.
Example
>>> obj = {'a': 1, 'b': '2', 'c': 3 } >>> pick_by(obj, lambda v: isinstance(v, int)) == {'a': 1, 'c': 3} True
New in version 4.0.0.
- pydash.objects.rename_keys(obj: Dict[T, T2], key_map: Dict[Any, T3]) Dict[T | T3, T2] [source]#
Rename the keys of obj using key_map and return new object.
- Parameters:
obj – Object to rename.
key_map – Renaming map whose keys correspond to existing keys in obj and whose values are the new key name.
- Returns:
Renamed obj.
Example
>>> obj = rename_keys({'a': 1, 'b': 2, 'c': 3}, {'a': 'A', 'b': 'B'}) >>> obj == {'A': 1, 'B': 2, 'c': 3} True
New in version 2.0.0.
- pydash.objects.set_(obj: T, path: Hashable | List[Hashable], value: Any) T [source]#
Sets the value of an object described by path. If any part of the object path doesn’t exist, it will be created.
- Parameters:
obj – Object to modify.
path – Target path to set value to.
value – Value to set.
- Returns:
Modified obj.
Warning
obj is modified in place.
Example
>>> set_({}, 'a.b.c', 1) {'a': {'b': {'c': 1}}} >>> set_({}, 'a.0.c', 1) {'a': {'0': {'c': 1}}} >>> set_([1, 2], '[2][0]', 1) [1, 2, [1]] >>> set_({}, 'a.b[0].c', 1) {'a': {'b': [{'c': 1}]}}
New in version 2.2.0.
Changed in version 3.3.0: Added
set_()
as main definition anddeep_set()
as alias.Changed in version 4.0.0:
Modify obj in place.
Support creating default path values as
list
ordict
based on whether key or index substrings are used.Remove alias
deep_set
.
- pydash.objects.set_with(obj: T, path: Hashable | List[Hashable], value: Any, customizer: Callable | None = None) T [source]#
This method is like
set_()
except that it accepts customizer which is invoked to produce the objects of path. If customizer returns undefined path creation is handled by the method instead. The customizer is invoked with three arguments:(nested_value, key, nested_object)
.- Parameters:
obj – Object to modify.
path – Target path to set value to.
value – Value to set.
customizer – The function to customize assigned values.
- Returns:
Modified obj.
Warning
obj is modified in place.
Example
>>> set_with({}, '[0][1]', 'a', lambda: {}) {0: {1: 'a'}}
New in version 4.0.0.
Changed in version 4.3.1: Fixed bug where a callable value was called when being set.
- pydash.objects.to_boolean(obj: Any, true_values: Tuple[str, ...] = ('true', '1'), false_values: Tuple[str, ...] = ('false', '0')) bool | None [source]#
Convert obj to boolean. This is not like the builtin
bool
function. By default, commonly considered strings values are converted to their boolean equivalent, i.e.,'0'
and'false'
are converted toFalse
while'1'
and'true'
are converted toTrue
. If a string value is provided that isn’t recognized as having a common boolean conversion, then the returned value isNone
. Non-string values of obj are converted usingbool
. Optionally, true_values and false_values can be overridden but each value must be a string.- Parameters:
obj – Object to convert.
true_values – Values to consider
True
. Each value must be a string. Comparision is case-insensitive. Defaults to('true', '1')
.false_values – Values to consider
False
. Each value must be a string. Comparision is case-insensitive. Defaults to('false', '0')
.
- Returns:
Boolean value of obj.
Example
>>> to_boolean('true') True >>> to_boolean('1') True >>> to_boolean('false') False >>> to_boolean('0') False >>> assert to_boolean('a') is None
New in version 3.0.0.
- pydash.objects.to_dict(obj: Mapping[T, T2]) Dict[T, T2] [source]#
- pydash.objects.to_dict(obj: Iterable[T]) Dict[int, T]
- pydash.objects.to_dict(obj: Any) Dict
Convert obj to
dict
by creating a newdict
using obj keys and values.- Parameters:
obj – Object to convert.
- Returns:
Object converted to
dict
.
Example
>>> obj = {'a': 1, 'b': 2} >>> obj2 = to_dict(obj) >>> obj2 == obj True >>> obj2 is not obj True
New in version 3.0.0.
Changed in version 4.0.0: Removed alias
to_plain_object
.Changed in version 4.2.0: Use
pydash.helpers.iterator
to generate key/value pairs.Changed in version 4.7.1: Try to convert to
dict
usingdict()
first, then fallback to usingpydash.helpers.iterator
.
- pydash.objects.to_integer(obj: Any) int [source]#
Converts obj to an integer.
- Parameters:
obj – Object to convert.
- Returns:
Converted integer or
0
if it can’t be converted.
Example
>>> to_integer(3.2) 3 >>> to_integer('3.2') 3 >>> to_integer('3.9') 3 >>> to_integer('invalid') 0
New in version 4.0.0.
- pydash.objects.to_list(obj: Dict[Any, T], split_strings: bool = True) List[T] [source]#
- pydash.objects.to_list(obj: Iterable[T], split_strings: bool = True) List[T]
- pydash.objects.to_list(obj: T, split_strings: bool = True) List[T]
Converts an obj, an iterable or a single item to a list.
- Parameters:
obj – Object to convert item or wrap.
split_strings – Whether to split strings into single chars. Defaults to
True
.
- Returns:
Converted obj or wrapped item.
Example
>>> results = to_list({'a': 1, 'b': 2, 'c': 3}) >>> assert set(results) == set([1, 2, 3])
>>> to_list((1, 2, 3, 4)) [1, 2, 3, 4]
>>> to_list(1) [1]
>>> to_list([1]) [1]
>>> to_list(a for a in [1, 2, 3]) [1, 2, 3]
>>> to_list('cat') ['c', 'a', 't']
>>> to_list('cat', split_strings=False) ['cat']
New in version 1.0.0.
Changed in version 4.3.0:
Wrap non-iterable items in a list.
Convert other iterables to list.
Byte objects are returned as single character strings in Python 3.
- pydash.objects.to_number(obj: Any, precision: int = 0) float | None [source]#
Convert obj to a number. All numbers are retuned as
float
. If precision is negative, round obj to the nearest positive integer place. If obj can’t be converted to a number,None
is returned.- Parameters:
obj – Object to convert.
precision – Precision to round number to. Defaults to
0
.
- Returns:
Converted number or
None
if it can’t be converted.
Example
>>> to_number('1234.5678') 1235.0 >>> to_number('1234.5678', 4) 1234.5678 >>> to_number(1, 2) 1.0
New in version 3.0.0.
- pydash.objects.to_pairs(obj: Mapping[T, T2]) List[List[T | T2]] [source]#
- pydash.objects.to_pairs(obj: Iterable[T]) List[List[int | T]]
- pydash.objects.to_pairs(obj: Any) List
Creates a two-dimensional list of an object’s key-value pairs, i.e.,
[[key1, value1], [key2, value2]]
.- Parameters:
obj – Object to process.
- Returns:
Two dimensional list of object’s key-value pairs.
Example
>>> to_pairs([1, 2, 3, 4]) [[0, 1], [1, 2], [2, 3], [3, 4]] >>> to_pairs({'a': 1}) [['a', 1]]
New in version 1.0.0.
Changed in version 4.0.0: Renamed from
pairs
toto_pairs
.
- pydash.objects.to_string(obj: Any) str [source]#
Converts an object to string.
- Parameters:
obj – Object to convert.
- Returns:
String representation of obj.
Example
>>> to_string(1) == '1' True >>> to_string(None) == '' True >>> to_string([1, 2, 3]) == '[1, 2, 3]' True >>> to_string('a') == 'a' True
New in version 2.0.0.
Changed in version 3.0.0: Convert
None
to empty string.
- pydash.objects.transform(obj: Mapping[T, T2], iteratee: Callable[[T3, T2, T, Dict[T, T2]], Any], accumulator: T3) T3 [source]#
- pydash.objects.transform(obj: Mapping[T, T2], iteratee: Callable[[T3, T2, T], Any], accumulator: T3) T3
- pydash.objects.transform(obj: Mapping[Any, T2], iteratee: Callable[[T3, T2], Any], accumulator: T3) T3
- pydash.objects.transform(obj: Mapping[Any, Any], iteratee: Callable[[T3], Any], accumulator: T3) T3
- pydash.objects.transform(obj: Iterable[T], iteratee: Callable[[T3, T, int, List[T]], Any], accumulator: T3) T3
- pydash.objects.transform(obj: Iterable[T], iteratee: Callable[[T3, T, int], Any], accumulator: T3) T3
- pydash.objects.transform(obj: Iterable[T], iteratee: Callable[[T3, T], Any], accumulator: T3) T3
- pydash.objects.transform(obj: Iterable[Any], iteratee: Callable[[T3], Any], accumulator: T3) T3
- pydash.objects.transform(obj: Any, iteratee: Any = None, accumulator: Any = None) Any
An alernative to
pydash.collections.reduce()
, this method transforms obj to a new accumulator object which is the result of running each of its properties through an iteratee, with each iteratee execution potentially mutating the accumulator object. The iteratee is invoked with four arguments:(accumulator, value, key, object)
. Iteratees may exit iteration early by explicitly returningFalse
.- Parameters:
obj – Object to process.
iteratee – Iteratee applied per iteration.
accumulator – Accumulated object. Defaults to
list
.
- Returns:
Accumulated object.
Example
>>> transform([1, 2, 3, 4], lambda acc, v, k: acc.append((k, v))) [(0, 1), (1, 2), (2, 3), (3, 4)]
New in version 1.0.0.
- pydash.objects.unset(obj: List | Dict, path: Hashable | List[Hashable]) bool [source]#
Removes the property at path of obj.
Note
Only
list
,dict
, or objects with apop()
method can be unset by this function.- Parameters:
obj – The object to modify.
path – The path of the property to unset.
- Returns:
Whether the property was deleted.
Warning
obj is modified in place.
Example
>>> obj = {'a': [{'b': {'c': 7}}]} >>> unset(obj, 'a[0].b.c') True >>> obj {'a': [{'b': {}}]} >>> unset(obj, 'a[0].b.c') False
- pydash.objects.update(obj: Dict[Any, T2], path: Hashable | List[Hashable], updater: Callable[[T2], Any]) Dict [source]#
- pydash.objects.update(obj: List[T], path: Hashable | List[Hashable], updater: Callable[[T], Any]) List
- pydash.objects.update(obj: T, path: Hashable | List[Hashable], updater: Callable) T
This method is like
set_()
except that accepts updater to produce the value to set. Useupdate_with()
to customize path creation. The updater is invoked with one argument:(value)
.- Parameters:
obj – Object to modify.
path – A string or list of keys that describe the object path to modify.
updater – Function that returns updated value.
- Returns:
Updated obj.
Warning
obj is modified in place.
Example
>>> update({}, ['a', 'b'], lambda value: value) {'a': {'b': None}} >>> update([], [0, 0], lambda value: 1) [[1]]
New in version 4.0.0.
- pydash.objects.update_with(obj: Dict[Any, T2], path: Hashable | List[Hashable], updater: Callable[[T2], Any], customizer: Callable | None) Dict [source]#
- pydash.objects.update_with(obj: List[T], path: Hashable | List[Hashable], updater: Callable[[T], Any], customizer: Callable | None = None) List
- pydash.objects.update_with(obj: T, path: Hashable | List[Hashable], updater: Callable, customizer: Callable | None = None) T
This method is like
update()
except that it accepts customizer which is invoked to produce the objects of path. If customizer returnsNone
, path creation is handled by the method instead. The customizer is invoked with three arguments:(nested_value, key, nested_object)
.- Parameters:
obj – Object to modify.
path – A string or list of keys that describe the object path to modify.
updater – Function that returns updated value.
customizer – The function to customize assigned values.
- Returns:
Updated obj.
Warning
obj is modified in place.
Example
>>> update_with({}, '[0][1]', lambda: 'a', lambda: {}) {0: {1: 'a'}}
New in version 4.0.0.
- pydash.objects.values(obj: Mapping[Any, T2]) List[T2] [source]#
- pydash.objects.values(obj: Iterable[T]) List[T]
- pydash.objects.values(obj: Any) List
Creates a list composed of the values of obj.
- Parameters:
obj – Object to extract values from.
- Returns:
List of values.
Example
>>> results = values({'a': 1, 'b': 2, 'c': 3}) >>> set(results) == set([1, 2, 3]) True >>> values([2, 4, 6, 8]) [2, 4, 6, 8]
New in version 1.0.0.
Changed in version 1.1.0: Added
values_in
as alias.Changed in version 4.0.0: Removed alias
values_in
.
Predicates#
Predicate functions that return boolean evaluations of objects.
New in version 2.0.0.
- pydash.predicates.eq(value: Any, other: Any) bool [source]#
Checks if
value
is equal toother
.- Parameters:
value – Value to compare.
other – Other value to compare.
- Returns:
Whether
value
is equal toother
.
Example
>>> eq(None, None) True >>> eq(None, '') False >>> eq('a', 'a') True >>> eq(1, str(1)) False
New in version 4.0.0.
- pydash.predicates.gt(value: SupportsDunderGT[T], other: T) bool [source]#
Checks if value is greater than other.
- Parameters:
value – Value to compare.
other – Other value to compare.
- Returns:
Whether value is greater than other.
Example
>>> gt(5, 3) True >>> gt(3, 5) False >>> gt(5, 5) False
New in version 3.3.0.
- pydash.predicates.gte(value: SupportsDunderGE[T], other: T) bool [source]#
Checks if value is greater than or equal to other.
- Parameters:
value – Value to compare.
other – Other value to compare.
- Returns:
Whether value is greater than or equal to other.
Example
>>> gte(5, 3) True >>> gte(3, 5) False >>> gte(5, 5) True
New in version 3.3.0.
- pydash.predicates.in_range(value: Any, start: Any = 0, end: Any = None) bool [source]#
Checks if value is between start and up to but not including end. If end is not specified it defaults to start with start becoming
0
.- Parameters:
value – Number to check.
start – Start of range inclusive. Defaults to
0
.end – End of range exclusive. Defaults to start.
- Returns:
Whether value is in range.
Example
>>> in_range(2, 4) True >>> in_range(4, 2) False >>> in_range(2, 1, 3) True >>> in_range(3, 1, 2) False >>> in_range(2.5, 3.5) True >>> in_range(3.5, 2.5) False
New in version 3.1.0.
- pydash.predicates.is_associative(value: Any) bool [source]#
Checks if value is an associative object meaning that it can be accessed via an index or key.
- Parameters:
value – Value to check.
- Returns:
Whether value is associative.
Example
>>> is_associative([]) True >>> is_associative({}) True >>> is_associative(1) False >>> is_associative(True) False
New in version 2.0.0.
- pydash.predicates.is_blank(text: Any) TypeGuard[str] [source]#
Checks if text contains only whitespace characters.
- Parameters:
text – String to test.
- Returns:
Whether text is blank.
Example
>>> is_blank('') True >>> is_blank(' \r\n ') True >>> is_blank(False) False
New in version 3.0.0.
- pydash.predicates.is_boolean(value: Any) TypeGuard[bool] [source]#
Checks if value is a boolean value.
- Parameters:
value – Value to check.
- Returns:
Whether value is a boolean.
Example
>>> is_boolean(True) True >>> is_boolean(False) True >>> is_boolean(0) False
New in version 1.0.0.
Changed in version 3.0.0: Added
is_bool
as alias.Changed in version 4.0.0: Removed alias
is_bool
.
- pydash.predicates.is_builtin(value: Any) bool [source]#
Checks if value is a Python builtin function or method.
- Parameters:
value – Value to check.
- Returns:
Whether value is a Python builtin function or method.
Example
>>> is_builtin(1) True >>> is_builtin(list) True >>> is_builtin('foo') False
New in version 3.0.0.
Changed in version 4.0.0: Removed alias
is_native
.
- pydash.predicates.is_date(value: Any) bool [source]#
Check if value is a date object.
- Parameters:
value – Value to check.
- Returns:
Whether value is a date object.
Example
>>> import datetime >>> is_date(datetime.date.today()) True >>> is_date(datetime.datetime.today()) True >>> is_date('2014-01-01') False
Note
This will also return
True
for datetime objects.New in version 1.0.0.
- pydash.predicates.is_decreasing(value: SupportsRichComparison | List[SupportsRichComparison]) bool [source]#
Check if value is monotonically decreasing.
- Parameters:
value – Value to check.
- Returns:
Whether value is monotonically decreasing.
Example
>>> is_decreasing([5, 4, 4, 3]) True >>> is_decreasing([5, 5, 5]) True >>> is_decreasing([5, 4, 5]) False
New in version 2.0.0.
- pydash.predicates.is_dict(value: Any) bool [source]#
Checks if value is a
dict
.- Parameters:
value – Value to check.
- Returns:
Whether value is a
dict
.
Example
>>> is_dict({}) True >>> is_dict([]) False
New in version 1.0.0.
Changed in version 3.0.0: Added
is_dict()
as main definition and made is_plain_object` an alias.Changed in version 4.0.0: Removed alias
is_plain_object
.
- pydash.predicates.is_empty(value: Any) bool [source]#
Checks if value is empty.
- Parameters:
value – Value to check.
- Returns:
Whether value is empty.
Example
>>> is_empty(0) True >>> is_empty(1) True >>> is_empty(True) True >>> is_empty('foo') False >>> is_empty(None) True >>> is_empty({}) True
Note
Returns
True
for booleans and numbers.New in version 1.0.0.
- pydash.predicates.is_equal(value: Any, other: Any) bool [source]#
Performs a comparison between two values to determine if they are equivalent to each other.
- Parameters:
value – Object to compare.
other – Object to compare.
- Returns:
Whether value and other are equal.
Example
>>> is_equal([1, 2, 3], [1, 2, 3]) True >>> is_equal('a', 'A') False
New in version 1.0.0.
Changed in version 4.0.0: Removed
iteratee
fromis_equal()
and added it inis_equal_with()
.
- pydash.predicates.is_equal_with(value: T, other: T2, customizer: Callable[[T, T2], T3]) T3 [source]#
- pydash.predicates.is_equal_with(value: Any, other: Any, customizer: Callable) bool
- pydash.predicates.is_equal_with(value: Any, other: Any, customizer: None) bool
This method is like
is_equal()
except that it accepts customizer which is invoked to compare values. A customizer is provided which will be executed to compare values. If the customizer returnsNone
, comparisons will be handled by the method instead. The customizer is invoked with two arguments:(value, other)
.- Parameters:
value – Object to compare.
other – Object to compare.
customizer – Customizer used to compare values from value and other.
- Returns:
Whether value and other are equal.
Example
>>> is_equal_with([1, 2, 3], [1, 2, 3], None) True >>> is_equal_with('a', 'A', None) False >>> is_equal_with('a', 'A', lambda a, b: a.lower() == b.lower()) True
New in version 4.0.0.
- pydash.predicates.is_error(value: Any) bool [source]#
Checks if value is an
Exception
.- Parameters:
value – Value to check.
- Returns:
Whether value is an exception.
Example
>>> is_error(Exception()) True >>> is_error(Exception) False >>> is_error(None) False
New in version 1.1.0.
- pydash.predicates.is_even(value: Any) bool [source]#
Checks if value is even.
- Parameters:
value – Value to check.
- Returns:
Whether value is even.
Example
>>> is_even(2) True >>> is_even(3) False >>> is_even(False) False
New in version 2.0.0.
- pydash.predicates.is_float(value: Any) TypeGuard[float] [source]#
Checks if value is a float.
- Parameters:
value – Value to check.
- Returns:
Whether value is a float.
Example
>>> is_float(1.0) True >>> is_float(1) False
New in version 2.0.0.
- pydash.predicates.is_function(value: Any) bool [source]#
Checks if value is a function.
- Parameters:
value – Value to check.
- Returns:
Whether value is callable.
Example
>>> is_function(list) True >>> is_function(lambda: True) True >>> is_function(1) False
New in version 1.0.0.
- pydash.predicates.is_increasing(value: SupportsRichComparison | List[SupportsRichComparison]) bool [source]#
Check if value is monotonically increasing.
- Parameters:
value – Value to check.
- Returns:
Whether value is monotonically increasing.
Example
>>> is_increasing([1, 3, 5]) True >>> is_increasing([1, 1, 2, 3, 3]) True >>> is_increasing([5, 5, 5]) True >>> is_increasing([1, 2, 4, 3]) False
New in version 2.0.0.
- pydash.predicates.is_indexed(value: Any) bool [source]#
Checks if value is integer indexed, i.e.,
list
,str
ortuple
.- Parameters:
value – Value to check.
- Returns:
Whether value is integer indexed.
Example
>>> is_indexed('') True >>> is_indexed([]) True >>> is_indexed(()) True >>> is_indexed({}) False
New in version 2.0.0.
Changed in version 3.0.0: Return
True
for tuples.
- pydash.predicates.is_instance_of(value: Any, types: type | Tuple[type, ...]) bool [source]#
Checks if value is an instance of types.
- Parameters:
value – Value to check.
types – Types to check against. Pass as
tuple
to check if value is one of multiple types.
- Returns:
Whether value is an instance of types.
Example
>>> is_instance_of({}, dict) True >>> is_instance_of({}, list) False
New in version 2.0.0.
- pydash.predicates.is_integer(value: Any) TypeGuard[int] [source]#
Checks if value is a integer.
- Parameters:
value – Value to check.
- Returns:
Whether value is an integer.
Example
>>> is_integer(1) True >>> is_integer(1.0) False >>> is_integer(True) False
New in version 2.0.0.
Changed in version 3.0.0: Added
is_int
as alias.Changed in version 4.0.0: Removed alias
is_int
.
- pydash.predicates.is_iterable(value: Any) bool [source]#
Checks if value is an iterable.
- Parameters:
value – Value to check.
- Returns:
Whether value is an iterable.
Example
>>> is_iterable([]) True >>> is_iterable({}) True >>> is_iterable(()) True >>> is_iterable(5) False >>> is_iterable(True) False
New in version 3.3.0.
- pydash.predicates.is_json(value: Any) bool [source]#
Checks if value is a valid JSON string.
- Parameters:
value – Value to check.
- Returns:
Whether value is JSON.
Example
>>> is_json({}) False >>> is_json('{}') True >>> is_json({"hello": 1, "world": 2}) False >>> is_json('{"hello": 1, "world": 2}') True
New in version 2.0.0.
- pydash.predicates.is_list(value: Any) bool [source]#
Checks if value is a list.
- Parameters:
value – Value to check.
- Returns:
Whether value is a list.
Example
>>> is_list([]) True >>> is_list({}) False >>> is_list(()) False
New in version 1.0.0.
- pydash.predicates.is_match(obj: Any, source: Any) bool [source]#
Performs a partial deep comparison between obj and source to determine if obj contains equivalent property values.
- Parameters:
obj – Object to compare.
source – Object of property values to match.
- Returns:
Whether obj is a match or not.
Example
>>> is_match({'a': 1, 'b': 2}, {'b': 2}) True >>> is_match({'a': 1, 'b': 2}, {'b': 3}) False >>> is_match({'a': [{'b': [{'c': 3, 'd': 4}]}]}, {'a': [{'b': [{'d': 4}]}]}) True
New in version 3.0.0.
Changed in version 3.2.0: Don’t compare obj and source using
type
. Useisinstance
exclusively.Changed in version 4.0.0: Move iteratee argument to
is_match_with()
.
- pydash.predicates.is_match_with(obj: ~typing.Any, source: ~typing.Any, customizer: ~typing.Any = None, _key: ~typing.Any = <pydash.helpers.Unset object>, _obj: ~typing.Any = <pydash.helpers.Unset object>, _source: ~typing.Any = <pydash.helpers.Unset object>) bool [source]#
This method is like
is_match()
except that it accepts customizer which is invoked to compare values. If customizer returnsNone
, comparisons are handled by the method instead. The customizer is invoked with five arguments:(obj_value, src_value, index|key, obj, source)
.- Parameters:
obj – Object to compare.
source – Object of property values to match.
customizer – Customizer used to compare values from obj and source.
- Returns:
Whether obj is a match or not.
Example
>>> is_greeting = lambda val: val in ('hello', 'hi') >>> customizer = lambda ov, sv: is_greeting(ov) and is_greeting(sv) >>> obj = {'greeting': 'hello'} >>> src = {'greeting': 'hi'} >>> is_match_with(obj, src, customizer) True
New in version 4.0.0.
- pydash.predicates.is_monotone(value: T | List[T], op: Callable[[T, T], Any]) bool [source]#
Checks if value is monotonic when operator used for comparison.
- Parameters:
value – Value to check.
op – Operation to used for comparison.
- Returns:
Whether value is monotone.
Example
>>> is_monotone([1, 1, 2, 3], operator.le) True >>> is_monotone([1, 1, 2, 3], operator.lt) False
New in version 2.0.0.
- pydash.predicates.is_nan(value: Any) bool [source]#
Checks if value is not a number.
- Parameters:
value – Value to check.
- Returns:
Whether value is not a number.
Example
>>> is_nan('a') True >>> is_nan(1) False >>> is_nan(1.0) False
New in version 1.0.0.
- pydash.predicates.is_negative(value: Any) bool [source]#
Checks if value is negative.
- Parameters:
value – Value to check.
- Returns:
Whether value is negative.
Example
>>> is_negative(-1) True >>> is_negative(0) False >>> is_negative(1) False
New in version 2.0.0.
- pydash.predicates.is_none(value: Any) TypeGuard[None] [source]#
Checks if value is None.
- Parameters:
value – Value to check.
- Returns:
Whether value is
None
.
Example
>>> is_none(None) True >>> is_none(False) False
New in version 1.0.0.
- pydash.predicates.is_number(value: Any) bool [source]#
Checks if value is a number.
- Parameters:
value – Value to check.
- Returns:
Whether value is a number.
Note
Returns
True
forint
,long
(PY2),float
, anddecimal.Decimal
.Example
>>> is_number(1) True >>> is_number(1.0) True >>> is_number('a') False
New in version 1.0.0.
Changed in version 3.0.0: Added
is_num
as alias.Changed in version 4.0.0: Removed alias
is_num
.
- pydash.predicates.is_object(value: Any) bool [source]#
Checks if value is a
list
ordict
.- Parameters:
value – Value to check.
- Returns:
Whether value is
list
ordict
.
Example
>>> is_object([]) True >>> is_object({}) True >>> is_object(()) False >>> is_object(1) False
New in version 1.0.0.
- pydash.predicates.is_odd(value: Any) bool [source]#
Checks if value is odd.
- Parameters:
value – Value to check.
- Returns:
Whether value is odd.
Example
>>> is_odd(3) True >>> is_odd(2) False >>> is_odd('a') False
New in version 2.0.0.
- pydash.predicates.is_positive(value: Any) bool [source]#
Checks if value is positive.
- Parameters:
value – Value to check.
- Returns:
Whether value is positive.
Example
>>> is_positive(1) True >>> is_positive(0) False >>> is_positive(-1) False
New in version 2.0.0.
- pydash.predicates.is_reg_exp(value: Any) TypeGuard[Pattern] [source]#
Checks if value is a
RegExp
object.- Parameters:
value – Value to check.
- Returns:
Whether value is a RegExp object.
Example
>>> is_reg_exp(re.compile('')) True >>> is_reg_exp('') False
New in version 1.1.0.
Changed in version 4.0.0: Removed alias
is_re
.
- pydash.predicates.is_set(value: Any) bool [source]#
Checks if the given value is a set object or not.
- Parameters:
value – Value passed in by the user.
- Returns:
True if the given value is a set else False.
Example
>>> is_set(set([1, 2])) True >>> is_set([1, 2, 3]) False
New in version 4.0.0.
- pydash.predicates.is_strictly_decreasing(value: SupportsRichComparison | List[SupportsRichComparison]) bool [source]#
Check if value is strictly decreasing.
- Parameters:
value – Value to check.
- Returns:
Whether value is strictly decreasing.
Example
>>> is_strictly_decreasing([4, 3, 2, 1]) True >>> is_strictly_decreasing([4, 4, 2, 1]) False
New in version 2.0.0.
- pydash.predicates.is_strictly_increasing(value: SupportsRichComparison | List[SupportsRichComparison]) bool [source]#
Check if value is strictly increasing.
- Parameters:
value – Value to check.
- Returns:
Whether value is strictly increasing.
Example
>>> is_strictly_increasing([1, 2, 3, 4]) True >>> is_strictly_increasing([1, 1, 3, 4]) False
New in version 2.0.0.
- pydash.predicates.is_string(value: Any) TypeGuard[str] [source]#
Checks if value is a string.
- Parameters:
value – Value to check.
- Returns:
Whether value is a string.
Example
>>> is_string('') True >>> is_string(1) False
New in version 1.0.0.
- pydash.predicates.is_tuple(value: Any) bool [source]#
Checks if value is a tuple.
- Parameters:
value – Value to check.
- Returns:
Whether value is a tuple.
Example
>>> is_tuple(()) True >>> is_tuple({}) False >>> is_tuple([]) False
New in version 3.0.0.
- pydash.predicates.is_zero(value: Any) TypeGuard[int] [source]#
Checks if value is
0
.- Parameters:
value – Value to check.
- Returns:
Whether value is
0
.
Example
>>> is_zero(0) True >>> is_zero(1) False
New in version 2.0.0.
- pydash.predicates.lt(value: SupportsDunderLT[T], other: T) bool [source]#
Checks if value is less than other.
- Parameters:
value – Value to compare.
other – Other value to compare.
- Returns:
Whether value is less than other.
Example
>>> lt(5, 3) False >>> lt(3, 5) True >>> lt(5, 5) False
New in version 3.3.0.
- pydash.predicates.lte(value: SupportsDunderLE[T], other: T) bool [source]#
Checks if value is less than or equal to other.
- Parameters:
value – Value to compare.
other – Other value to compare.
- Returns:
Whether value is less than or equal to other.
Example
>>> lte(5, 3) False >>> lte(3, 5) True >>> lte(5, 5) True
New in version 3.3.0.
Strings#
String functions.
New in version 1.1.0.
- pydash.strings.camel_case(text: Any) str [source]#
Converts text to camel case.
- Parameters:
text – String to convert.
- Returns:
String converted to camel case.
Example
>>> camel_case('FOO BAR_bAz') 'fooBarBAz'
New in version 1.1.0.
Changed in version 5.0.0: Improved unicode word support.
- pydash.strings.capitalize(text: Any, strict: bool = True) str [source]#
Capitalizes the first character of text.
- Parameters:
text – String to capitalize.
strict – Whether to cast rest of string to lower case. Defaults to
True
.
- Returns:
Capitalized string.
Example
>>> capitalize('once upon a TIME') 'Once upon a time' >>> capitalize('once upon a TIME', False) 'Once upon a TIME'
New in version 1.1.0.
Changed in version 3.0.0: Added strict option.
- pydash.strings.chars(text: Any) List[str] [source]#
Split text into a list of single characters.
- Parameters:
text – String to split up.
- Returns:
List of individual characters.
Example
>>> chars('onetwo') ['o', 'n', 'e', 't', 'w', 'o']
New in version 3.0.0.
- pydash.strings.chop(text: Any, step: int) List[str] [source]#
Break up text into intervals of length step.
- Parameters:
text – String to chop.
step – Interval to chop text.
- Returns:
List of chopped characters. If text is None an empty list is returned.
Example
>>> chop('abcdefg', 3) ['abc', 'def', 'g']
New in version 3.0.0.
- pydash.strings.chop_right(text: Any, step: int) List[str] [source]#
Like
chop()
except text is chopped from right.- Parameters:
text – String to chop.
step – Interval to chop text.
- Returns:
List of chopped characters.
Example
>>> chop_right('abcdefg', 3) ['a', 'bcd', 'efg']
New in version 3.0.0.
- pydash.strings.clean(text: Any) str [source]#
Trim and replace multiple spaces with a single space.
- Parameters:
text – String to clean.
- Returns:
Cleaned string.
Example
>>> clean('a b c d') 'a b c d'
New in version 3.0.0.
- pydash.strings.count_substr(text: Any, subtext: Any) int [source]#
Count the occurrences of subtext in text.
- Parameters:
text – Source string to count from.
subtext – String to count.
- Returns:
Number of occurrences of subtext in text.
Example
>>> count_substr('aabbccddaabbccdd', 'bc') 2
New in version 3.0.0.
- pydash.strings.deburr(text: Any) str [source]#
Deburrs text by converting latin-1 supplementary letters to basic latin letters.
- Parameters:
text – String to deburr.
- Returns:
Deburred string.
Example
>>> deburr('déjà vu') '... >>> 'deja vu' 'deja vu'
New in version 2.0.0.
- pydash.strings.decapitalize(text: Any) str [source]#
Decaptitalizes the first character of text.
- Parameters:
text – String to decapitalize.
- Returns:
Decapitalized string.
Example
>>> decapitalize('FOO BAR') 'fOO BAR'
New in version 3.0.0.
- pydash.strings.ends_with(text: Any, target: Any, position: int | None = None) bool [source]#
Checks if text ends with a given target string.
- Parameters:
text – String to check.
target – String to check for.
position – Position to search from. Defaults to end of text.
- Returns:
Whether text ends with target.
Example
>>> ends_with('abc def', 'def') True >>> ends_with('abc def', 4) False
New in version 1.1.0.
- pydash.strings.ensure_ends_with(text: Any, suffix: Any) str [source]#
Append a given suffix to a string, but only if the source string does not end with that suffix.
- Parameters:
text – Source string to append suffix to.
suffix – String to append to the source string if the source string does not end with suffix.
- Returns:
source string possibly extended by suffix.
Example
>>> ensure_ends_with('foo bar', '!') 'foo bar!' >>> ensure_ends_with('foo bar!', '!') 'foo bar!'
New in version 2.4.0.
- pydash.strings.ensure_starts_with(text: Any, prefix: Any) str [source]#
Prepend a given prefix to a string, but only if the source string does not start with that prefix.
- Parameters:
text – Source string to prepend prefix to.
prefix – String to prepend to the source string if the source string does not start with prefix.
- Returns:
source string possibly prefixed by prefix
Example
>>> ensure_starts_with('foo bar', 'Oh my! ') 'Oh my! foo bar' >>> ensure_starts_with('Oh my! foo bar', 'Oh my! ') 'Oh my! foo bar'
New in version 2.4.0.
- pydash.strings.escape(text: Any) str [source]#
Converts the characters
&
,<
,>
,"
,'
, and\`
in text to their corresponding HTML entities.- Parameters:
text – String to escape.
- Returns:
HTML escaped string.
Example
>>> escape('"1 > 2 && 3 < 4"') '"1 > 2 && 3 < 4"'
New in version 1.0.0.
Changed in version 1.1.0: Moved function to
pydash.strings
.
- pydash.strings.escape_reg_exp(text: Any) str [source]#
Escapes the RegExp special characters in text.
- Parameters:
text – String to escape.
- Returns:
RegExp escaped string.
Example
>>> escape_reg_exp('[()]') '\\[\\(\\)\\]'
New in version 1.1.0.
Changed in version 4.0.0: Removed alias
escape_re
- pydash.strings.has_substr(text: Any, subtext: Any) bool [source]#
Returns whether subtext is included in text.
- Parameters:
text – String to search.
subtext – String to search for.
- Returns:
Whether subtext is found in text.
Example
>>> has_substr('abcdef', 'bc') True >>> has_substr('abcdef', 'bb') False
New in version 3.0.0.
- pydash.strings.human_case(text: Any) str [source]#
Converts text to human case which has only the first letter capitalized and each word separated by a space.
- Parameters:
text – String to convert.
- Returns:
String converted to human case.
Example
>>> human_case('abc-def_hij lmn') 'Abc def hij lmn' >>> human_case('user_id') 'User'
New in version 3.0.0.
Changed in version 5.0.0: Improved unicode word support.
- pydash.strings.insert_substr(text: Any, index: int, subtext: Any) str [source]#
Insert subtext in text starting at position index.
- Parameters:
text – String to add substring to.
index – String index to insert into.
subtext – String to insert.
- Returns:
Modified string.
Example
>>> insert_substr('abcdef', 3, '--') 'abc--def'
New in version 3.0.0.
- pydash.strings.join(array: Iterable[Any], separator: Any = '') str [source]#
Joins an iterable into a string using separator between each element.
- Parameters:
array – Iterable to implode.
separator – Separator to using when joining. Defaults to
''
.
- Returns:
Joined string.
Example
>>> join(['a', 'b', 'c']) == 'abc' True >>> join([1, 2, 3, 4], '&') == '1&2&3&4' True >>> join('abcdef', '-') == 'a-b-c-d-e-f' True
New in version 2.0.0.
Changed in version 4.0.0: Removed alias
implode
.
- pydash.strings.kebab_case(text: Any) str [source]#
Converts text to kebab case (a.k.a. spinal case).
- Parameters:
text – String to convert.
- Returns:
String converted to kebab case.
Example
>>> kebab_case('a b c_d-e!f') 'a-b-c-d-e-f'
New in version 1.1.0.
Changed in version 5.0.0: Improved unicode word support.
- pydash.strings.lines(text: Any) List[str] [source]#
Split lines in text into an array.
- Parameters:
text – String to split.
- Returns:
String split by lines.
Example
>>> lines('a\nb\r\nc') ['a', 'b', 'c']
New in version 3.0.0.
- pydash.strings.lower_case(text: Any) str [source]#
Converts string to lower case as space separated words.
- Parameters:
text – String to convert.
- Returns:
String converted to lower case as space separated words.
Example
>>> lower_case('fooBar') 'foo bar' >>> lower_case('--foo-Bar--') 'foo bar' >>> lower_case('/?*Foo10/;"B*Ar') 'foo 10 b ar'
New in version 4.0.0.
Changed in version 5.0.0: Improved unicode word support.
- pydash.strings.lower_first(text: str) str [source]#
Converts the first character of string to lower case.
- Parameters:
text – String passed in by the user.
- Returns:
String in which the first character is converted to lower case.
Example
>>> lower_first('FRED') 'fRED' >>> lower_first('Foo Bar') 'foo Bar' >>> lower_first('1foobar') '1foobar' >>> lower_first(';foobar') ';foobar'
New in version 4.0.0.
- pydash.strings.number_format(number: float | int | Decimal, scale: int = 0, decimal_separator: str = '.', order_separator: str = ',') str [source]#
Format a number to scale with custom decimal and order separators.
- Parameters:
number – Number to format.
scale – Number of decimals to include. Defaults to
0
.decimal_separator – Decimal separator to use. Defaults to
'.'
.order_separator – Order separator to use. Defaults to
','
.
- Returns:
Number formatted as string.
Example
>>> number_format(1234.5678) '1,235' >>> number_format(1234.5678, 2, ',', '.') '1.234,57'
New in version 3.0.0.
- pydash.strings.pad(text: Any, length: int, chars: Any = ' ') str [source]#
Pads text on the left and right sides if it is shorter than the given padding length. The chars string may be truncated if the number of padding characters can’t be evenly divided by the padding length.
- Parameters:
text – String to pad.
length – Amount to pad.
chars – Characters to pad with. Defaults to
" "
.
- Returns:
Padded string.
Example
>>> pad('abc', 5) ' abc ' >>> pad('abc', 6, 'x') 'xabcxx' >>> pad('abc', 5, '...') '.abc.'
New in version 1.1.0.
Changed in version 3.0.0: Fix handling of multiple chars so that padded string isn’t over padded.
- pydash.strings.pad_end(text: Any, length: int, chars: Any = ' ') str [source]#
Pads text on the right side if it is shorter than the given padding length. The chars string may be truncated if the number of padding characters can’t be evenly divided by the padding length.
- Parameters:
text – String to pad.
length – Amount to pad.
chars – Characters to pad with. Defaults to
" "
.
- Returns:
Padded string.
Example
>>> pad_end('abc', 5) 'abc ' >>> pad_end('abc', 5, '.') 'abc..'
New in version 1.1.0.
Changed in version 4.0.0: Renamed from
pad_right
topad_end
.
- pydash.strings.pad_start(text: Any, length: int, chars: Any = ' ') str [source]#
Pads text on the left side if it is shorter than the given padding length. The chars string may be truncated if the number of padding characters can’t be evenly divided by the padding length.
- Parameters:
text – String to pad.
length – Amount to pad.
chars – Characters to pad with. Defaults to
" "
.
- Returns:
Padded string.
Example
>>> pad_start('abc', 5) ' abc' >>> pad_start('abc', 5, '.') '..abc'
New in version 1.1.0.
Changed in version 4.0.0: Renamed from
pad_left
topad_start
.
- pydash.strings.pascal_case(text: Any, strict: bool = True) str [source]#
Like
camel_case()
except the first letter is capitalized.- Parameters:
text – String to convert.
strict – Whether to cast rest of string to lower case. Defaults to
True
.
- Returns:
String converted to class case.
Example
>>> pascal_case('FOO BAR_bAz') 'FooBarBaz' >>> pascal_case('FOO BAR_bAz', False) 'FooBarBAz'
New in version 3.0.0.
Changed in version 5.0.0: Improved unicode word support.
- pydash.strings.predecessor(char: Any) str [source]#
Return the predecessor character of char.
- Parameters:
char – Character to find the predecessor of.
- Returns:
Predecessor character.
Example
>>> predecessor('c') 'b' >>> predecessor('C') 'B' >>> predecessor('3') '2'
New in version 3.0.0.
- pydash.strings.prune(text: Any, length: int = 0, omission: str = '...') str [source]#
Like
truncate()
except it ensures that the pruned string doesn’t exceed the original length, i.e., it avoids half-chopped words when truncating. If the pruned text + omission text is longer than the original text, then the original text is returned.- Parameters:
text – String to prune.
length – Target prune length. Defaults to
0
.omission – Omission text to append to the end of the pruned string. Defaults to
'...'
.
- Returns:
Pruned string.
Example
>>> prune('Fe fi fo fum', 5) 'Fe fi...' >>> prune('Fe fi fo fum', 6) 'Fe fi...' >>> prune('Fe fi fo fum', 7) 'Fe fi...' >>> prune('Fe fi fo fum', 8, ',,,') 'Fe fi fo,,,'
New in version 3.0.0.
- pydash.strings.quote(text: Any, quote_char: Any = '"') str [source]#
Quote a string with another string.
- Parameters:
text – String to be quoted.
quote_char – the quote character. Defaults to
'"'
.
- Returns:
the quoted string.
Example
>>> quote('To be or not to be') '"To be or not to be"' >>> quote('To be or not to be', "'") "'To be or not to be'"
New in version 2.4.0.
- pydash.strings.reg_exp_js_match(text: Any, reg_exp: str) List[str] [source]#
Return list of matches using Javascript style regular expression.
- Parameters:
text – String to evaluate.
reg_exp – Javascript style regular expression.
- Returns:
List of matches.
Example
>>> reg_exp_js_match('aaBBcc', '/bb/') [] >>> reg_exp_js_match('aaBBcc', '/bb/i') ['BB'] >>> reg_exp_js_match('aaBBccbb', '/bb/i') ['BB'] >>> reg_exp_js_match('aaBBccbb', '/bb/gi') ['BB', 'bb']
New in version 2.0.0.
Changed in version 3.0.0: Reordered arguments to make text first.
Changed in version 4.0.0: Renamed from
js_match
toreg_exp_js_match
.
- pydash.strings.reg_exp_js_replace(text: Any, reg_exp: str, repl: str | Callable[[Match], str]) str [source]#
Replace text with repl using Javascript style regular expression to find matches.
- Parameters:
text – String to evaluate.
reg_exp – Javascript style regular expression.
repl – Replacement string or callable.
- Returns:
Modified string.
Example
>>> reg_exp_js_replace('aaBBcc', '/bb/', 'X') 'aaBBcc' >>> reg_exp_js_replace('aaBBcc', '/bb/i', 'X') 'aaXcc' >>> reg_exp_js_replace('aaBBccbb', '/bb/i', 'X') 'aaXccbb' >>> reg_exp_js_replace('aaBBccbb', '/bb/gi', 'X') 'aaXccX'
New in version 2.0.0.
Changed in version 3.0.0: Reordered arguments to make text first.
Changed in version 4.0.0: Renamed from
js_replace
toreg_exp_js_replace
.
- pydash.strings.reg_exp_replace(text: Any, pattern: Any, repl: str | Callable[[Match], str], ignore_case: bool = False, count: int = 0) str [source]#
Replace occurrences of regex pattern with repl in text. Optionally, ignore case when replacing. Optionally, set count to limit number of replacements.
- Parameters:
text – String to replace.
pattern – Pattern to find and replace.
repl – String to substitute pattern with.
ignore_case – Whether to ignore case when replacing. Defaults to
False
.count – Maximum number of occurrences to replace. Defaults to
0
which replaces all.
- Returns:
Replaced string.
Example
>>> reg_exp_replace('aabbcc', 'b', 'X') 'aaXXcc' >>> reg_exp_replace('aabbcc', 'B', 'X', ignore_case=True) 'aaXXcc' >>> reg_exp_replace('aabbcc', 'b', 'X', count=1) 'aaXbcc' >>> reg_exp_replace('aabbcc', '[ab]', 'X') 'XXXXcc'
New in version 3.0.0.
Changed in version 4.0.0: Renamed from
re_replace
toreg_exp_replace
.
- pydash.strings.repeat(text: Any, n: SupportsInt = 0) str [source]#
Repeats the given string n times.
- Parameters:
text – String to repeat.
n – Number of times to repeat the string.
- Returns:
Repeated string.
Example
>>> repeat('.', 5) '.....'
New in version 1.1.0.
- pydash.strings.replace(text: Any, pattern: Any, repl: str | Callable[[Match], str], ignore_case: bool = False, count: int = 0, escape: bool = True, from_start: bool = False, from_end: bool = False) str [source]#
Replace occurrences of pattern with repl in text. Optionally, ignore case when replacing. Optionally, set count to limit number of replacements.
- Parameters:
text – String to replace.
pattern – Pattern to find and replace.
repl – String to substitute pattern with.
ignore_case – Whether to ignore case when replacing. Defaults to
False
.count – Maximum number of occurrences to replace. Defaults to
0
which replaces all.escape – Whether to escape pattern when searching. This is needed if a literal replacement is desired when pattern may contain special regular expression characters. Defaults to
True
.from_start – Whether to limit replacement to start of string.
from_end – Whether to limit replacement to end of string.
- Returns:
Replaced string.
Example
>>> replace('aabbcc', 'b', 'X') 'aaXXcc' >>> replace('aabbcc', 'B', 'X', ignore_case=True) 'aaXXcc' >>> replace('aabbcc', 'b', 'X', count=1) 'aaXbcc' >>> replace('aabbcc', '[ab]', 'X') 'aabbcc' >>> replace('aabbcc', '[ab]', 'X', escape=False) 'XXXXcc'
New in version 3.0.0.
Changed in version 4.1.0: Added
from_start
andfrom_end
arguments.Changed in version 5.0.0: Added support for
pattern
astyping.Pattern
object.
- pydash.strings.replace_end(text: Any, pattern: Any, repl: str | Callable[[Match], str], ignore_case: bool = False, escape: bool = True) str [source]#
Like
replace()
except it only replaces text with repl if pattern mathces the end of text.- Parameters:
text – String to replace.
pattern – Pattern to find and replace.
repl – String to substitute pattern with.
ignore_case – Whether to ignore case when replacing. Defaults to
False
.escape – Whether to escape pattern when searching. This is needed if a literal replacement is desired when pattern may contain special regular expression characters. Defaults to
True
.
- Returns:
Replaced string.
Example
>>> replace_end('aabbcc', 'b', 'X') 'aabbcc' >>> replace_end('aabbcc', 'c', 'X') 'aabbcX'
New in version 4.1.0.
- pydash.strings.replace_start(text: Any, pattern: Any, repl: str | Callable[[Match], str], ignore_case: bool = False, escape: bool = True) str [source]#
Like
replace()
except it only replaces text with repl if pattern mathces the start of text.- Parameters:
text – String to replace.
pattern – Pattern to find and replace.
repl – String to substitute pattern with.
ignore_case – Whether to ignore case when replacing. Defaults to
False
.escape – Whether to escape pattern when searching. This is needed if a literal replacement is desired when pattern may contain special regular expression characters. Defaults to
True
.
- Returns:
Replaced string.
Example
>>> replace_start('aabbcc', 'b', 'X') 'aabbcc' >>> replace_start('aabbcc', 'a', 'X') 'Xabbcc'
New in version 4.1.0.
- pydash.strings.separator_case(text: Any, separator: str) str [source]#
Splits text on words and joins with separator.
- Parameters:
text – String to convert.
separator – Separator to join words with.
- Returns:
Converted string.
Example
>>> separator_case('a!!b___c.d', '-') 'a-b-c-d'
New in version 3.0.0.
Changed in version 5.0.0: Improved unicode word support.
- pydash.strings.series_phrase(items: List[Any], separator: Any = ', ', last_separator: Any = ' and ', serial: bool = False) str [source]#
Join items into a grammatical series phrase, e.g.,
"item1, item2, item3 and item4"
.- Parameters:
items – List of string items to join.
separator – Item separator. Defaults to
', '
.last_separator – Last item separator. Defaults to
' and '
.serial – Whether to include separator with last_separator when number of items is greater than 2. Defaults to
False
.
- Returns:
Joined string.
Example
>>> series_phrase(['apples', 'bananas', 'peaches']) 'apples, bananas and peaches' >>> series_phrase(['apples', 'bananas', 'peaches'], serial=True) 'apples, bananas, and peaches' >>> series_phrase(['apples', 'bananas', 'peaches'], '; ', ', or ') 'apples; bananas, or peaches'
New in version 3.0.0.
- pydash.strings.series_phrase_serial(items: List[Any], separator: Any = ', ', last_separator: Any = ' and ') str [source]#
Join items into a grammatical series phrase using a serial separator, e.g.,
"item1, item2, item3, and item4"
.- Parameters:
items – List of string items to join.
separator – Item separator. Defaults to
', '
.last_separator – Last item separator. Defaults to
' and '
.
- Returns:
Joined string.
Example
>>> series_phrase_serial(['apples', 'bananas', 'peaches']) 'apples, bananas, and peaches'
New in version 3.0.0.
- pydash.strings.slugify(text: Any, separator: str = '-') str [source]#
Convert text into an ASCII slug which can be used safely in URLs. Incoming text is converted to unicode and noramlzied using the
NFKD
form. This results in some accented characters being converted to their ASCII “equivalent” (e.g.é
is converted toe
). Leading and trailing whitespace is trimmed and any remaining whitespace or other special characters without an ASCII equivalent are replaced with-
.- Parameters:
text – String to slugify.
separator – Separator to use. Defaults to
'-'
.
- Returns:
Slugified string.
Example
>>> slugify('This is a slug.') == 'this-is-a-slug' True >>> slugify('This is a slug.', '+') == 'this+is+a+slug' True
New in version 3.0.0.
Changed in version 5.0.0: Improved unicode word support.
Changed in version 7.0.0: Remove single quotes from output.
- pydash.strings.snake_case(text: Any) str [source]#
Converts text to snake case.
- Parameters:
text – String to convert.
- Returns:
String converted to snake case.
Example
>>> snake_case('This is Snake Case!') 'this_is_snake_case'
New in version 1.1.0.
Changed in version 4.0.0: Removed alias
underscore_case
.Changed in version 5.0.0: Improved unicode word support.
- pydash.strings.split(text: ~typing.Any, separator: str | ~pydash.helpers.Unset | None = <pydash.helpers.Unset object>) List[str] [source]#
Splits text on separator. If separator not provided, then text is split on whitespace. If separator is falsey, then text is split on every character.
- Parameters:
text – String to explode.
separator – Separator string to split on. Defaults to
NoValue
.
- Returns:
Split string.
Example
>>> split('one potato, two potatoes, three potatoes, four!') ['one', 'potato,', 'two', 'potatoes,', 'three', 'potatoes,', 'four!'] >>> split('one potato, two potatoes, three potatoes, four!', ',') ['one potato', ' two potatoes', ' three potatoes', ' four!']
New in version 2.0.0.
Changed in version 3.0.0: Changed separator default to
NoValue
and supported splitting on whitespace by default.Changed in version 4.0.0: Removed alias
explode
.
- pydash.strings.start_case(text: Any) str [source]#
Convert text to start case.
- Parameters:
text – String to convert.
- Returns:
String converted to start case.
Example
>>> start_case("fooBar") 'Foo Bar'
New in version 3.1.0.
Changed in version 5.0.0: Improved unicode word support.
- pydash.strings.starts_with(text: Any, target: Any, position: int = 0) bool [source]#
Checks if text starts with a given target string.
- Parameters:
text – String to check.
target – String to check for.
position – Position to search from. Defaults to beginning of text.
- Returns:
Whether text starts with target.
Example
>>> starts_with('abcdef', 'a') True >>> starts_with('abcdef', 'b') False >>> starts_with('abcdef', 'a', 1) False
New in version 1.1.0.
- pydash.strings.strip_tags(text: Any) str [source]#
Removes all HTML tags from text.
- Parameters:
text – String to strip.
- Returns:
String without HTML tags.
Example
>>> strip_tags('<a href="#">Some link</a>') 'Some link'
New in version 3.0.0.
- pydash.strings.substr_left(text: Any, subtext: str) str [source]#
Searches text from left-to-right for subtext and returns a substring consisting of the characters in text that are to the left of subtext or all string if no match found.
- Parameters:
text – String to partition.
subtext – String to search for.
- Returns:
Substring to left of subtext.
Example
>>> substr_left('abcdefcdg', 'cd') 'ab'
New in version 3.0.0.
- pydash.strings.substr_left_end(text: Any, subtext: str) str [source]#
Searches text from right-to-left for subtext and returns a substring consisting of the characters in text that are to the left of subtext or all string if no match found.
- Parameters:
text – String to partition.
subtext – String to search for.
- Returns:
Substring to left of subtext.
Example
>>> substr_left_end('abcdefcdg', 'cd') 'abcdef'
New in version 3.0.0.
- pydash.strings.substr_right(text: Any, subtext: str) str [source]#
Searches text from right-to-left for subtext and returns a substring consisting of the characters in text that are to the right of subtext or all string if no match found.
- Parameters:
text – String to partition.
subtext – String to search for.
- Returns:
Substring to right of subtext.
Example
>>> substr_right('abcdefcdg', 'cd') 'efcdg'
New in version 3.0.0.
- pydash.strings.substr_right_end(text: Any, subtext: str) str [source]#
Searches text from left-to-right for subtext and returns a substring consisting of the characters in text that are to the right of subtext or all string if no match found.
- Parameters:
text – String to partition.
subtext – String to search for.
- Returns:
Substring to right of subtext.
Example
>>> substr_right_end('abcdefcdg', 'cd') 'g'
New in version 3.0.0.
- pydash.strings.successor(char: Any) str [source]#
Return the successor character of char.
- Parameters:
char – Character to find the successor of.
- Returns:
Successor character.
Example
>>> successor('b') 'c' >>> successor('B') 'C' >>> successor('2') '3'
New in version 3.0.0.
- pydash.strings.surround(text: Any, wrapper: Any) str [source]#
Surround a string with another string.
- Parameters:
text – String to surround with wrapper.
wrapper – String by which text is to be surrounded.
- Returns:
Surrounded string.
Example
>>> surround('abc', '"') '"abc"' >>> surround('abc', '!') '!abc!'
New in version 2.4.0.
- pydash.strings.swap_case(text: Any) str [source]#
Swap case of text characters.
- Parameters:
text – String to swap case.
- Returns:
String with swapped case.
Example
>>> swap_case('aBcDeF') 'AbCdEf'
New in version 3.0.0.
- pydash.strings.title_case(text: Any) str [source]#
Convert text to title case.
- Parameters:
text – String to convert.
- Returns:
String converted to title case.
Example
>>> title_case("bob's shop") "Bob's Shop"
New in version 3.0.0.
- pydash.strings.to_lower(text: Any) str [source]#
Converts the given
text
to lower text.- Parameters:
text – String to convert.
- Returns:
String converted to lower case.
Example
>>> to_lower('--Foo-Bar--') '--foo-bar--' >>> to_lower('fooBar') 'foobar' >>> to_lower('__FOO_BAR__') '__foo_bar__'
New in version 4.0.0.
- pydash.strings.to_upper(text: Any) str [source]#
Converts the given
text
to upper text.- Parameters:
text – String to convert.
- Returns:
String converted to upper case.
Example
>>> to_upper('--Foo-Bar--') '--FOO-BAR--' >>> to_upper('fooBar') 'FOOBAR' >>> to_upper('__FOO_BAR__') '__FOO_BAR__'
New in version 4.0.0.
- pydash.strings.trim(text: Any, chars: str | None = None) str [source]#
Removes leading and trailing whitespace or specified characters from text.
- Parameters:
text – String to trim.
chars – Specific characters to remove.
- Returns:
Trimmed string.
Example
>>> trim(' abc efg\r\n ') 'abc efg'
New in version 1.1.0.
- pydash.strings.trim_end(text: Any, chars: str | None = None) str [source]#
Removes trailing whitespace or specified characters from text.
- Parameters:
text – String to trim.
chars – Specific characters to remove.
- Returns:
Trimmed string.
Example
>>> trim_end(' abc efg\r\n ') ' abc efg'
New in version 1.1.0.
Changed in version 4.0.0: Renamed from
trim_right
totrim_end
.
- pydash.strings.trim_start(text: Any, chars: str | None = None) str [source]#
Removes leading whitespace or specified characters from text.
- Parameters:
text – String to trim.
chars – Specific characters to remove.
- Returns:
Trimmed string.
Example
>>> trim_start(' abc efg\r\n ') 'abc efg\r\n '
New in version 1.1.0.
Changed in version 4.0.0: Renamed from
trim_left
totrim_start
.
- pydash.strings.truncate(text: Any, length: int = 30, omission: str = '...', separator: str | Pattern | None = None) str [source]#
Truncates text if it is longer than the given maximum string length. The last characters of the truncated string are replaced with the omission string which defaults to
...
.- Parameters:
text – String to truncate.
length – Maximum string length. Defaults to
30
.omission – String to indicate text is omitted.
separator – Separator pattern to truncate to.
- Returns:
Truncated string.
Example
>>> truncate('hello world', 5) 'he...' >>> truncate('hello world', 5, '..') 'hel..' >>> truncate('hello world', 10) 'hello w...' >>> truncate('hello world', 10, separator=' ') 'hello...'
New in version 1.1.0.
Changed in version 4.0.0: Removed alias
trunc
.
- pydash.strings.unescape(text: Any) str [source]#
The inverse of
escape()
. This method converts the HTML entities&
,<
,>
,"
,'
, and`
in text to their corresponding characters.- Parameters:
text – String to unescape.
- Returns:
HTML unescaped string.
Example
>>> results = unescape('"1 > 2 && 3 < 4"') >>> results == '"1 > 2 && 3 < 4"' True
New in version 1.0.0.
Changed in version 1.1.0: Moved to
pydash.strings
.
- pydash.strings.unquote(text: Any, quote_char: Any = '"') str [source]#
Unquote text by removing quote_char if text begins and ends with it.
- Parameters:
text – String to unquote.
quote_char – Quote character to remove. Defaults to “.
- Returns:
Unquoted string.
Example
>>> unquote('"abc"') 'abc' >>> unquote('"abc"', '#') '"abc"' >>> unquote('#abc', '#') '#abc' >>> unquote('#abc#', '#') 'abc'
New in version 3.0.0.
- pydash.strings.upper_case(text: Any) str [source]#
Converts string to upper case, as space separated words.
- Parameters:
text – String to be converted to uppercase.
- Returns:
String converted to uppercase, as space separated words.
Example
>>> upper_case('--foo-bar--') 'FOO BAR' >>> upper_case('fooBar') 'FOO BAR' >>> upper_case('/?*Foo10/;"B*Ar') 'FOO 10 B AR'
New in version 4.0.0.
Changed in version 5.0.0: Improved unicode word support.
- pydash.strings.upper_first(text: str) str [source]#
Converts the first character of string to upper case.
- Parameters:
text – String passed in by the user.
- Returns:
String in which the first character is converted to upper case.
Example
>>> upper_first('fred') 'Fred' >>> upper_first('foo bar') 'Foo bar' >>> upper_first('1foobar') '1foobar' >>> upper_first(';foobar') ';foobar'
New in version 4.0.0.
- pydash.strings.url(*paths: Any, **params: Any) str [source]#
Combines a series of URL paths into a single URL. Optionally, pass in keyword arguments to append query parameters.
- Parameters:
paths – URL paths to combine.
- Keyword Arguments:
params – Query parameters.
- Returns:
URL string.
Example
>>> link = url('a', 'b', ['c', 'd'], '/', q='X', y='Z') >>> path, params = link.split('?') >>> path == 'a/b/c/d/' True >>> set(params.split('&')) == set(['q=X', 'y=Z']) True
New in version 2.2.0.
- pydash.strings.words(text: Any, pattern: str | None = None) List[str] [source]#
Return list of words contained in text.
References
https://github.com/lodash/lodash/blob/master/words.js#L30
- Parameters:
text – String to split.
pattern – Custom pattern to split words on. Defaults to
None
.
- Returns:
List of words.
Example
>>> words('a b, c; d-e') ['a', 'b', 'c', 'd', 'e'] >>> words('fred, barney, & pebbles', '/[^, ]+/g') ['fred', 'barney', '&', 'pebbles']
New in version 2.0.0.
Changed in version 3.2.0: Added pattern argument.
Changed in version 3.2.0: Improved matching for one character words.
Changed in version 5.0.0: Improved unicode word support.
Utilities#
Utility functions.
New in version 1.0.0.
- pydash.utilities.attempt(func: ~typing.Callable[[~P], ~pydash.utilities.T], *args: ~typing.~P, **kwargs: ~typing.~P) T | Exception [source]#
Attempts to execute func, returning either the result or the caught error object.
- Parameters:
func – The function to attempt.
- Returns:
Returns the func result or error object.
Example
>>> results = attempt(lambda x: x/0, 1) >>> assert isinstance(results, ZeroDivisionError)
New in version 1.1.0.
- pydash.utilities.cond(pairs: List[Tuple[Callable[[P], Any], Callable[[P], T]]], *extra_pairs: Tuple[Callable[[P], Any], Callable[[P], T]]) Callable[[P], T] [source]#
- pydash.utilities.cond(pairs: List[List[Callable[[P], Any]]], *extra_pairs: List[Callable[[P], Any]]) Callable[[P], Any]
Creates a function that iterates over pairs and invokes the corresponding function of the first predicate to return truthy.
- Parameters:
pairs – A list of predicate-function pairs.
- Returns:
Returns the new composite function.
Example
>>> func = cond([[matches({'a': 1}), constant('matches A')], [matches({'b': 2}), constant('matches B')], [stub_true, lambda value: value]]) >>> func({'a': 1, 'b': 2}) 'matches A' >>> func({'a': 0, 'b': 2}) 'matches B' >>> func({'a': 0, 'b': 0}) == {'a': 0, 'b': 0} True
New in version 4.0.0.
Changed in version 4.2.0: Fixed missing argument passing to matched function and added support for passing in a single list of pairs instead of just pairs as separate arguments.
- pydash.utilities.conforms(source: Dict[T, Callable[[T2], Any]]) Callable[[Dict[T, T2]], bool] [source]#
- pydash.utilities.conforms(source: List[Callable[[T], Any]]) Callable[[List[T]], bool]
Creates a function that invokes the predicate properties of source with the corresponding property values of a given object, returning
True
if all predicates return truthy, elseFalse
.- Parameters:
source – The object of property predicates to conform to.
- Returns:
Returns the new spec function.
Example
>>> func = conforms({'b': lambda n: n > 1}) >>> func({'b': 2}) True >>> func({'b': 0}) False >>> func = conforms([lambda n: n > 1, lambda n: n == 0]) >>> func([2, 0]) True >>> func([0, 0]) False
New in version 4.0.0.
- pydash.utilities.conforms_to(obj: Dict[T, T2], source: Dict[T, Callable[[T2], Any]]) bool [source]#
- pydash.utilities.conforms_to(obj: List[T], source: List[Callable[[T], Any]]) bool
Checks if obj conforms to source by invoking the predicate properties of source with the corresponding property values of obj.
- Parameters:
obj – The object to inspect.
source – The object of property predicates to conform to.
Example
>>> conforms_to({'b': 2}, {'b': lambda n: n > 1}) True >>> conforms_to({'b': 0}, {'b': lambda n: n > 1}) False >>> conforms_to([2, 0], [lambda n: n > 1, lambda n: n == 0]) True >>> conforms_to([0, 0], [lambda n: n > 1, lambda n: n == 0]) False
New in version 4.0.0.
- pydash.utilities.constant(value: T) Callable[[...], T] [source]#
Creates a function that returns value.
- Parameters:
value – Constant value to return.
- Returns:
Function that always returns value.
Example
>>> pi = constant(3.14) >>> pi() == 3.14 True
New in version 1.0.0.
Changed in version 4.0.0: Returned function ignores arguments instead of raising exception.
- pydash.utilities.default_to(value: T | None, default_value: T2) T | T2 [source]#
Checks value to determine whether a default value should be returned in its place. The default_value is returned if value is None.
- Parameters:
default_value – Default value passed in by the user.
- Returns:
Returns value if
value
is given otherwise returns default_value.
Example
>>> default_to(1, 10) 1 >>> default_to(None, 10) 10
New in version 4.0.0.
- pydash.utilities.default_to_any(value: None, *default_values: None) None [source]#
- pydash.utilities.default_to_any(value: T | None, default_value1: None, default_value2: T2) T | T2
- pydash.utilities.default_to_any(value: T | None, default_value1: None, default_value2: None, default_value3: T2) T | T2
- pydash.utilities.default_to_any(value: T | None, default_value1: None, default_value2: None, default_value3: None, default_value4: T2) T | T2
- pydash.utilities.default_to_any(value: T | None, default_value1: None, default_value2: None, default_value3: None, default_value4: None, default_value5: T2) T | T2
- pydash.utilities.default_to_any(value: T | None, *default_values: T2) T | T2
Checks value to determine whether a default value should be returned in its place. The first item that is not None of the default_values is returned.
- Parameters:
value – Value passed in by the user.
*default_values – Default values passed in by the user.
- Returns:
- Returns value if
value
is given otherwise returns the first not None value of default_values.
- Returns value if
Example
>>> default_to_any(1, 10, 20) 1 >>> default_to_any(None, 10, 20) 10 >>> default_to_any(None, None, 20) 20
New in version 4.9.0.
- pydash.utilities.identity(arg: T, *args: Any) T [source]#
- pydash.utilities.identity(arg: None = None, *args: Any) None
Return the first argument provided to it.
- Parameters:
*args – Arguments.
- Returns:
First argument or
None
.
Example
>>> identity(1) 1 >>> identity(1, 2, 3) 1 >>> identity() is None True
New in version 1.0.0.
- pydash.utilities.iteratee(func: Callable[[P], T]) Callable[[P], T] [source]#
- pydash.utilities.iteratee(func: Any) Callable
Return a pydash style iteratee. If func is a property name the created iteratee will return the property value for a given element. If func is an object the created iteratee will return
True
for elements that contain the equivalent object properties, otherwise it will returnFalse
.- Parameters:
func – Object to create iteratee function from.
- Returns:
Iteratee function.
Example
>>> get_data = iteratee('data') >>> get_data({'data': [1, 2, 3]}) [1, 2, 3] >>> is_active = iteratee({'active': True}) >>> is_active({'active': True}) True >>> is_active({'active': 0}) False >>> iteratee(['a', 5])({'a': 5}) True >>> iteratee(['a.b'])({'a.b': 5}) 5 >>> iteratee('a.b')({'a': {'b': 5}}) 5 >>> iteratee(('a', ['c', 'd', 'e']))({'a': 1, 'c': {'d': {'e': 3}}}) [1, 3] >>> iteratee(lambda a, b: a + b)(1, 2) 3 >>> ident = iteratee(None) >>> ident('a') 'a' >>> ident(1, 2, 3) 1
New in version 1.0.0.
Changed in version 2.0.0: Renamed
create_iteratee()
toiteratee()
.Changed in version 3.0.0: Made pluck style iteratee support deep property access.
Changed in version 3.1.0: - Added support for shallow pluck style property access via single item list/tuple. - Added support for matches property style iteratee via two item list/tuple.
Changed in version 4.0.0: Removed alias
callback
.Changed in version 4.1.0: Return
properties()
callback when func is atuple
.
- pydash.utilities.matches(source: Any) Callable[[Any], bool] [source]#
Creates a matches-style predicate function which performs a deep comparison between a given object and the source object, returning
True
if the given object has equivalent property values, elseFalse
.- Parameters:
source – Source object used for comparision.
- Returns:
- Function that compares an object to source and returns whether the two objects
contain the same items.
Example
>>> matches({'a': {'b': 2}})({'a': {'b': 2, 'c':3}}) True >>> matches({'a': 1})({'b': 2, 'a': 1}) True >>> matches({'a': 1})({'b': 2, 'a': 2}) False
New in version 1.0.0.
Changed in version 3.0.0: Use
pydash.predicates.is_match()
as matching function.
- pydash.utilities.matches_property(key: Any, value: Any) Callable[[Any], bool] [source]#
Creates a function that compares the property value of key on a given object to value.
- Parameters:
key – Object key to match against.
value – Value to compare to.
- Returns:
- Function that compares value to an object’s key and returns whether they are
equal.
Example
>>> matches_property('a', 1)({'a': 1, 'b': 2}) True >>> matches_property(0, 1)([1, 2, 3]) True >>> matches_property('a', 2)({'a': 1, 'b': 2}) False
New in version 3.1.0.
- pydash.utilities.memoize(func: Callable[[P], T], resolver: None = None) MemoizedFunc[P, T, str] [source]#
- pydash.utilities.memoize(func: Callable[[P], T], resolver: Callable[[P], T2] | None = None) MemoizedFunc[P, T, T2]
Creates a function that memoizes the result of func. If resolver is provided it will be used to determine the cache key for storing the result based on the arguments provided to the memoized function. By default, all arguments provided to the memoized function are used as the cache key. The result cache is exposed as the cache property on the memoized function.
- Parameters:
func – Function to memoize.
resolver – Function that returns the cache key to use.
- Returns:
Memoized function.
Example
>>> ident = memoize(identity) >>> ident(1) 1 >>> ident.cache['(1,){}'] == 1 True >>> ident(1, 2, 3) 1 >>> ident.cache['(1, 2, 3){}'] == 1 True
New in version 1.0.0.
- pydash.utilities.method(path: Hashable | List[Hashable], *args: Any, **kwargs: Any) Callable[[...], Any] [source]#
Creates a function that invokes the method at path on a given object. Any additional arguments are provided to the invoked method.
- Parameters:
path – Object path of method to invoke.
*args – Global arguments to apply to method when invoked.
**kwargs – Global keyword argument to apply to method when invoked.
- Returns:
Function that invokes method located at path for object.
Example
>>> obj = {'a': {'b': [None, lambda x: x]}} >>> echo = method('a.b.1') >>> echo(obj, 1) == 1 True >>> echo(obj, 'one') == 'one' True
New in version 3.3.0.
- pydash.utilities.method_of(obj: Any, *args: Any, **kwargs: Any) Callable[[...], Any] [source]#
The opposite of
method()
. This method creates a function that invokes the method at a given path on object. Any additional arguments are provided to the invoked method.- Parameters:
obj – The object to query.
*args – Global arguments to apply to method when invoked.
**kwargs – Global keyword argument to apply to method when invoked.
- Returns:
Function that invokes method located at path for object.
Example
>>> obj = {'a': {'b': [None, lambda x: x]}} >>> dispatch = method_of(obj) >>> dispatch('a.b.1', 1) == 1 True >>> dispatch('a.b.1', 'one') == 'one' True
New in version 3.3.0.
- pydash.utilities.noop(*args: Any, **kwargs: Any) None [source]#
A no-operation function.
New in version 1.0.0.
- pydash.utilities.now() int [source]#
Return the number of milliseconds that have elapsed since the Unix epoch (1 January 1970 00:00:00 UTC).
- Returns:
Milliseconds since Unix epoch.
New in version 1.0.0.
Changed in version 3.0.0: Use
datetime
module for calculating elapsed time.
- pydash.utilities.nth_arg(pos: int = 0) Callable[[...], Any] [source]#
Creates a function that gets the argument at index n. If n is negative, the nth argument from the end is returned.
- Parameters:
pos – The index of the argument to return.
- Returns:
Returns the new pass-thru function.
Example
>>> func = nth_arg(1) >>> func(11, 22, 33, 44) 22 >>> func = nth_arg(-1) >>> func(11, 22, 33, 44) 44
New in version 4.0.0.
- pydash.utilities.over(funcs: Iterable[Callable[[P], T]]) Callable[[P], List[T]] [source]#
Creates a function that invokes all functions in funcs with the arguments it receives and returns their results.
- Parameters:
funcs – List of functions to be invoked.
- Returns:
Returns the new pass-thru function.
Example
>>> func = over([max, min]) >>> func(1, 2, 3, 4) [4, 1]
New in version 4.0.0.
- pydash.utilities.over_every(funcs: Iterable[Callable[[P], Any]]) Callable[[P], bool] [source]#
Creates a function that checks if all the functions in funcs return truthy when invoked with the arguments it receives.
- Parameters:
funcs – List of functions to be invoked.
- Returns:
Returns the new pass-thru function.
Example
>>> func = over_every([bool, lambda x: x is not None]) >>> func(1) True
New in version 4.0.0.
- pydash.utilities.over_some(funcs: Iterable[Callable[[P], Any]]) Callable[[P], bool] [source]#
Creates a function that checks if any of the functions in funcs return truthy when invoked with the arguments it receives.
- Parameters:
funcs – List of functions to be invoked.
- Returns:
Returns the new pass-thru function.
Example
>>> func = over_some([bool, lambda x: x is None]) >>> func(1) True
New in version 4.0.0.
- pydash.utilities.properties(*paths: Any) Callable[[Any], Any] [source]#
Like
property_()
except that it returns a list of values at each path in paths.- Parameters:
*path – Path values to fetch from object.
- Returns:
Function that returns object’s path value.
Example
>>> getter = properties('a', 'b', ['c', 'd', 'e']) >>> getter({'a': 1, 'b': 2, 'c': {'d': {'e': 3}}}) [1, 2, 3]
New in version 4.1.0.
- pydash.utilities.property_(path: Hashable | List[Hashable]) Callable[[Any], Any] [source]#
Creates a function that returns the value at path of a given object.
- Parameters:
path – Path value to fetch from object.
- Returns:
Function that returns object’s path value.
Example
>>> get_data = property_('data') >>> get_data({'data': 1}) 1 >>> get_data({}) is None True >>> get_first = property_(0) >>> get_first([1, 2, 3]) 1
New in version 1.0.0.
Changed in version 4.0.1: Made property accessor work with deep path strings.
- pydash.utilities.property_of(obj: Any) Callable[[Hashable | List[Hashable]], Any] [source]#
The inverse of
property_()
. This method creates a function that returns the key value of a given key on obj.- Parameters:
obj – Object to fetch values from.
- Returns:
Function that returns object’s key value.
Example
>>> getter = property_of({'a': 1, 'b': 2, 'c': 3}) >>> getter('a') 1 >>> getter('b') 2 >>> getter('x') is None True
New in version 3.0.0.
Changed in version 4.0.0: Removed alias
prop_of
.
- pydash.utilities.random(start: int = 0, stop: int = 1, *, floating: Literal[False] = False) int [source]#
- pydash.utilities.random(start: float, stop: int = 1, floating: bool = False) float
- pydash.utilities.random(start: int = 0, *, stop: float, floating: bool = False) float
- pydash.utilities.random(start: float, stop: float, floating: bool = False) float
- pydash.utilities.random(start: float | int = 0, stop: float | int = 1, *, floating: Literal[True]) float
Produces a random number between start and stop (inclusive). If only one argument is provided a number between 0 and the given number will be returned. If floating is truthy or either start or stop are floats a floating-point number will be returned instead of an integer.
- Parameters:
start – Minimum value.
stop – Maximum value.
floating – Whether to force random value to
float
. Defaults toFalse
.
- Returns:
Random value.
Example
>>> 0 <= random() <= 1 True >>> 5 <= random(5, 10) <= 10 True >>> isinstance(random(floating=True), float) True
New in version 1.0.0.
- pydash.utilities.range_(stop: int) Generator[int, None, None] [source]#
- pydash.utilities.range_(start: int, stop: int, step: int = 1) Generator[int, None, None]
Creates a list of numbers (positive and/or negative) progressing from start up to but not including end. If start is less than stop, a zero-length range is created unless a negative step is specified.
- Parameters:
start – Integer to start with. Defaults to
0
.stop – Integer to stop at.
step – The value to increment or decrement by. Defaults to
1
.
- Yields:
Next integer in range.
Example
>>> list(range_(5)) [0, 1, 2, 3, 4] >>> list(range_(1, 4)) [1, 2, 3] >>> list(range_(0, 6, 2)) [0, 2, 4] >>> list(range_(4, 1)) [4, 3, 2]
New in version 1.0.0.
Changed in version 1.1.0: Moved to
pydash.uilities
.Changed in version 3.0.0: Return generator instead of list.
Changed in version 4.0.0: Support decrementing when start argument is greater than stop argument.
- pydash.utilities.range_right(stop: int) Generator[int, None, None] [source]#
- pydash.utilities.range_right(start: int, stop: int, step: int = 1) Generator[int, None, None]
Similar to
range_()
, except that it populates the values in descending order.- Parameters:
start – Integer to start with. Defaults to
0
.stop – Integer to stop at.
step – The value to increment or decrement by. Defaults to
1
if start < stop else-1
.
- Yields:
Next integer in range.
Example
>>> list(range_right(5)) [4, 3, 2, 1, 0] >>> list(range_right(1, 4)) [3, 2, 1] >>> list(range_right(0, 6, 2)) [4, 2, 0]
New in version 4.0.0.
- pydash.utilities.result(obj: None, key: Any, default: None = None) None [source]#
- pydash.utilities.result(obj: None, key: Any, default: T) T
- pydash.utilities.result(obj: Any, key: Any, default: Any = None) Any
Return the value of property key on obj. If key value is a function it will be invoked and its result returned, else the property value is returned. If obj is falsey then default is returned.
- Parameters:
obj – Object to retrieve result from.
key – Key or index to get result from.
default – Default value to return if obj is falsey. Defaults to
None
.
- Returns:
Result of
obj[key]
orNone
.
Example
>>> result({'a': 1, 'b': lambda: 2}, 'a') 1 >>> result({'a': 1, 'b': lambda: 2}, 'b') 2 >>> result({'a': 1, 'b': lambda: 2}, 'c') is None True >>> result({'a': 1, 'b': lambda: 2}, 'c', default=False) False
New in version 1.0.0.
Changed in version 2.0.0: Added
default
argument.
- pydash.utilities.retry(attempts: int = 3, delay: int | float = 0.5, max_delay: int | float = 150.0, scale: int | float = 2.0, jitter: int | float | ~typing.Tuple[float | int, float | int] = 0, exceptions: ~typing.Iterable[~typing.Type[Exception]] = (<class 'Exception'>,), on_exception: ~typing.Callable[[Exception, int], ~typing.Any] | None = None) Callable[[CallableT], CallableT] [source]#
Decorator that retries a function multiple times if it raises an exception with an optional delay between each attempt.
When a delay is supplied, there will be a sleep period in between retry attempts. The first delay time will always be equal to delay. After subsequent retries, the delay time will be scaled by scale up to max_delay. If max_delay is
0
, then delay can increase unbounded.- Parameters:
attempts – Number of retry attempts. Defaults to
3
.delay – Base amount of seconds to sleep between retry attempts. Defaults to
0.5
.max_delay – Maximum number of seconds to sleep between retries. Is ignored when equal to
0
. Defaults to150.0
(2.5 minutes).scale – Scale factor to increase delay after first retry fails. Defaults to
2.0
.jitter – Random jitter to add to delay time. Can be a positive number or 2-item tuple of numbers representing the random range to choose from. When a number is given, the random range will be from
[0, jitter]
. When jitter is a float or contains a float, then a random float will be chosen; otherwise, a random integer will be selected. Defaults to0
which disables jitter.exceptions – Tuple of exceptions that trigger a retry attempt. Exceptions not in the tuple will be ignored. Defaults to
(Exception,)
(all exceptions).on_exception – Function that is called when a retryable exception is caught. It is invoked with
on_exception(exc, attempt)
whereexc
is the caught exception andattempt
is the attempt count. All arguments are optional. Defaults toNone
.
Example
>>> @retry(attempts=3, delay=0) ... def do_something(): ... print('something') ... raise Exception('something went wrong') >>> try: do_something() ... except Exception: print('caught something') something something something caught something
..versionadded:: 4.4.0
- ..versionchanged:: 4.5.0
Added
jitter
argument.
- pydash.utilities.stub_dict() Dict [source]#
Returns empty “dict”.
- Returns:
Empty dict.
Example
>>> stub_dict() {}
New in version 4.0.0.
- pydash.utilities.stub_false() Literal[False] [source]#
Returns
False
.- Returns:
False
Example
>>> stub_false() False
New in version 4.0.0.
- pydash.utilities.stub_list() List [source]#
Returns empty “list”.
- Returns:
Empty list.
Example
>>> stub_list() []
New in version 4.0.0.
- pydash.utilities.stub_string() str [source]#
Returns an empty string.
- Returns:
Empty string
Example
>>> stub_string() ''
New in version 4.0.0.
- pydash.utilities.stub_true() Literal[True] [source]#
Returns
True
.- Returns:
True
Example
>>> stub_true() True
New in version 4.0.0.
- pydash.utilities.times(n: int, iteratee: Callable[[...], T]) List[T] [source]#
- pydash.utilities.times(n: int, iteratee: None = None) List[int]
Executes the iteratee n times, returning a list of the results of each iteratee execution. The iteratee is invoked with one argument:
(index)
.- Parameters:
n – Number of times to execute iteratee.
iteratee – Function to execute.
- Returns:
A list of results from calling iteratee.
Example
>>> times(5, lambda i: i) [0, 1, 2, 3, 4]
New in version 1.0.0.
Changed in version 3.0.0: Reordered arguments to make iteratee first.
Changed in version 4.0.0:
Re-reordered arguments to make iteratee last argument.
Added functionality for handling iteratee with zero positional arguments.
- pydash.utilities.to_path(value: Hashable | List[Hashable]) List[Hashable] [source]#
Converts values to a property path array.
- Parameters:
value – Value to convert.
- Returns:
Returns the new property path array.
Example
>>> to_path('a.b.c') ['a', 'b', 'c'] >>> to_path('a[0].b.c') ['a', 0, 'b', 'c'] >>> to_path('a[0][1][2].b.c') ['a', 0, 1, 2, 'b', 'c']
New in version 4.0.0.
Changed in version 4.2.1: Ensure returned path is always a list.
- pydash.utilities.unique_id(prefix: str | None = None) str [source]#
Generates a unique ID. If prefix is provided the ID will be appended to it.
- Parameters:
prefix – String prefix to prepend to ID value.
- Returns:
ID value.
Example
>>> unique_id() '1' >>> unique_id('id_') 'id_2' >>> unique_id() '3'
New in version 1.0.0.