Лучше всего показать на примере. Я беру поле свойств из графика matplotlib. Это словарь с разными ключами и значениями.Сравните два словаря с различными типами данных как значения
keys = gca().properties().keys
ax1 = gca().properties()
Тогда я черчения что-то другое, и я беру еще один экземпляр
ax2 = gca().properties()
Теперь предполагая, что одни и те же ключи действительны для ax2 (я думаю, что они, так как я не изменил тип сюжета), как я могу сравнить каждый из значений ax1 и ax2? Эти значения представляют собой разные типы данных, и простое сравнение не работает. Я попытался
for key in keys:
if ax1[key]!=ax2[key]:
print(key,ax1[key])
На что я получаю
Traceback (most recent call last):
File "<ipython-input-46-363fb313494e>", line 2, in <module>
if ax1[key]!=ax2[key]:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Я на самом деле хочу, чтобы найти имя и значения полей, которые отличаются между этими двумя участками. Есть ли способ сделать это с такой сложной структурой данных?
Ответ действителен, но после проверки я понял, что свойства сюжета вложены очень глубоко. Например, цвет линии находится в 'gca(). Properties() ['lines'] [0] .get_color()'. Есть ли способ сравнить цвета строк двух графиков (ax1 и ax2) без явного указания свойства? Я хочу сравнить все свойства и найти только те, которые отличаются. – Aguy
@ Theguy Да, но если в этих типах данных правильно реализовано сравнение равенства, приведенный выше код должен сравнивать 'gca(). Properties() ['lines'] [0]', и сравнение вернет 'False'. Если равенство не выполняется должным образом, оно почти всегда будет возвращать 'False'. В любом случае, если он не работает или вам требуется более подробное сравнение, вам нужно добавить более специальные случаи и вручную пойти глубже ... нет встроенного «сделать diff из двух общих объектов» в python. – Bakuriu