Deepdiff не игнорирует порядок при передаче ignore_orderPython

Программы на Python
Ответить
Anonymous
 Deepdiff не игнорирует порядок при передаче ignore_order

Сообщение Anonymous »

У меня есть два словаря:
#1

Код: Выделить всё

{"reg2/image2:0.1": {
"binaries": {
"/bin/xyz": {
"components": [
"d",
"aa",
"new",
"git.example.com/wayform-chassis/xyzserver-v0.25.3"
],
"md5": "8bf54c95f9"
}
},
"loose_packages": []}
#2

Код: Выделить всё

  "reg2/image2:0.2": {
"binaries": {
"/bin/xyz": {
"components": [
"c",
"git.example.com/wayform-chassis/xyzserver-v0.25.2",
"aa",
"asdhkjahsd"
],
"md5": "f78f65f31"
}
},
"loose_packages": ["test package"]}
С помощью следующей команды: ddiff = deepdiff.DeepDiff(data_a, data_b, ignore_order=True, get_deep_distance=True)
Мой результат:

Код: Выделить всё

    reg2/image2: {
"values_changed": {
"root['binaries']['/bin/xyz']['md5']": {
"new_value": "8bf54c95f9",
"old_value": "f78f65f31"
},
"root['binaries']['/bin/xyz']['components'][3]": {
"new_value": "git.example.com/wayform-chassis/xyzserver-v0.25.3",
"old_value": "asdhkjahsd"
},
"root['binaries']['/bin/xyz']['components'][0]": {
"new_value": "d",
"old_value": "c"
}
},
"iterable_item_added": {
"root['binaries']['/bin/xyz']['components'][2]": "new"
},
"iterable_item_removed": {
"root['binaries']['/bin/xyz']['components'][1]": "git.example.com/wayform-chassis/xyzserver-v0.25.2",
"root['loose_packages'][0]": "test package"
},
"deep_distance": 0.25806451612903225
}
Это неверно, или, по крайней мере, я хочу представить результат не так. он не должен сообщать, что значение изменилось в зависимости от порядка, посмотрите, как там написано:

Код: Выделить всё

"root['binaries']['/bin/xyz']['components'][3]": {
"new_value": "git.example.com/wayform-chassis/xyzserver-v0.25.3",
"old_value": "asdhkjahsd"
Вместо этого я должен увидеть:

Код: Выделить всё

"root['binaries']['/bin/xyz']['components'][3]": {
"new_value": "git.example.com/wayform-chassis/xyzserver-v0.25.3",
"old_value": "git.example.com/wayform-chassis/xyzserver-v0.25.2"
Или хотя бы:

Код: Выделить всё

"iterable_item_added": {
"root['binaries']['/bin/xyz']['components'][3]": "git.example.com/wayform-chassis/xyzserver-v0.25.3"

"iterable_item_removed": {
"root['binaries']['/bin/xyz']['components'][1]": "git.example.com/wayform-chassis/xyzserver-v0.25.2"
Как вы можете видеть, там говорится, что новое значение местоположения изменилось, когда я подумал, что с моим аргументом порядка игнорирования, он должен делать именно это, игнорировать порядок и просто сообщать о различиях. ?
Если это невозможно с помощью deepdiff, каков лучший способ достичь желаемого результата?

Подробнее здесь: https://stackoverflow.com/questions/765 ... nore-order
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»