Extract — DeepDiff 8.5.0 documentation (original) (raw)
Get the item from obj based on path.
Example:
from deepdiff import extract obj = {1: [{'2': 'b'}, 3], 2: [4, 5]} path = "root[1][0]['2']" extract(obj, path) 'b'
Note that you can use extract in conjunction with DeepDiff results or even with the search and DeepSearch modules. For example:
from deepdiff import grep obj = {1: [{'2': 'b'}, 3], 2: [4, 5]} result = obj | grep(5) result {'matched_values': ['root[2][1]']} result['matched_values'][0] 'root[2][1]' path = result['matched_values'][0] extract(obj, path) 5
Note
Note that even if DeepDiff tried gives you a path to an item in a set, there is no such thing in Python and hence you will get an error trying to extract that item from a set. If you want to be able to get items from sets, use the SetOrdered module to generate the sets. In fact Deepdiff uses SetOrdered as a dependency.
from deepdiff import grep, extract obj = {"a", "b"} obj | grep("b") Set item detected in the path.'set' objects do NOT support indexing. But DeepSearch will still report a path. {'matched_values': SetOrdered(['root[0]'])} extract(obj, 'root[0]') Traceback (most recent call last): File "", line 1, in File "deepdiff/deepdiff/path.py", line 126, in extract return _get_nested_obj(obj, elements) File "deepdiff/deepdiff/path.py", line 84, in _get_nested_obj obj = obj[elem] TypeError: 'set' object is not subscriptable from orderly_set import SetOrdered obj = SetOrdered(["a", "b"]) extract(obj, 'root[0]') 'a'
Back to DeepDiff 8.5.0 documentation!