Comments (6)
Once we properly implement the delta operator for DeepDiff then you can get the delta of a DeepDiff result from the original object which should give you what is the same between the 2.
from deepdiff.
🧟
Since it seems that Delta is now implemented here in the future, and this issue is still open:
I'm trying to understand how to get similarity out of Delta, and I'm just not wrapping my head around it.
Any tips on how one might accomplish getting "unchanged values" out of a diff between two dictionaries?
Partial solution, but doesn't cover deeply nested values well: #203
from deepdiff.
@lhriley You are correct. What I wrote in 2017 doesn't make sense. The delta object is only holding the difference between the 2 objects.
from deepdiff.
I need to think about how this makes sense. For example, if in a nested dictionary, one value is changed, what do we report as similar?
t1 = {"key": {"a": {"key2": "val2", "key3": "val3", "key4": "val4"}}}
t1 = {"key": {"a": {"key2": "val2", "key3": "DIFFERENT!!", "key4": "val4"}}}
Do you expected something like this?
root["key"]["a"]["key2"]
root["key"]["a"]["key4"]
from deepdiff.
@seperman that's a good question. I guess that I would expect a dict
like object that goes as deep as the detected change.
Given:
t1 = {"key": {"a": {"key2": "val2", "key3": "val3", "key4": "val4"}}}
t2 = {"key": {"a": {"key2": "val2", "key3": "DIFFERENT!!", "key4": "val4"}}}
I could call:
delta.unchanged => {"key": {"a": {"key2": "val2", "key4": "val4"}}}
delta.changed => {"key": {"a": {"key3": "DIFFERENT!!"}}}
Then in my code I could do something like:
if delta.changed:
print("values changed!")
print(delta.changed)
print(delta.diff)
# do something about the change
if delta.unchanged:
print("values didn't change. skipping.")
print(delta.unchanged)
# nothing to do for unchanged values
from deepdiff.
Hi,
I would definitely use the feature as well. My scenario is two objects with some overlap, where I would like to make the second object a "pure delta" - without any elements already present in the first one.
I would expect a result to look identically to a diff, just like with comparison done with equal operator instead of non-equal.
from deepdiff.
Related Issues (20)
- Error after comparing: Can not produce a hash (type datetime.date doesn't define __round__ method) HOT 1
- parse_path() cannot parse a path HOT 4
- Is there a way to systematically cycle through all corresponding attributes that haven't changed? HOT 1
- support compre string as float specify precision HOT 1
- Error when comparing two nested dicts with 2 added fields HOT 5
- why exclude_regex_paths dont work with ignore_order HOT 1
- Change of integer attribute is not detected HOT 3
- DeepDiff include_path param doesn't work with list of dictionaries HOT 1
- Instantiating a Delta with a flat_dict_list unexpectedly mutates the flat_dict_list HOT 1
- DeepDiff result got errors but not raising an exception
- Documentation on how to create an object only containing changed elements. HOT 1
- DeepDiff cannot compare two zero-dimensional `ndarrays` HOT 2
- Deepdiff incompatible with numpy 2.0 HOT 3
- DeepDiff cannot distinguish between datetime timezones HOT 1
- DeepDiff significiant digit 0 is comparing digits after the decimal point
- deepdiff diff error when i haved set a custom iterable_compare_func HOT 1
- load 2 json files to dict, the compare result is not correct HOT 1
- exclude_regex_paths does not work correctly with regular expressions including $
- TypeError when diffing dict that have bytes keys HOT 1
- deepdiff 7.0.1 test failure in Fedora rawhide with Python 3.13 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from deepdiff.