Jak wszystkie słowniki na liście mają tylko jeden klucz i jedną wartość, to możesz je zamienić na krotkę (k, v)
, która już jest haszowalna, więc możesz z nich zrobić set i zastosować operacje mnogościowe, a na końcu zamienić znowu na słownik.
>>> a = [{'a': 2}, {'s': 5}]
>>> b = [{'a': 2}, {'s': 5}, {'c': 'z'}, {'m': 111}]
>>> set(next(iter(d.items())) for d in a)
{('a', 2), ('s', 5)}
>>> set(next(iter(d.items())) for d in b)
{('a', 2), ('m', 111), ('s', 5), ('c', 'z')}
>>> [{k: v} for k, v in set(next(iter(d.items())) for d in b) - set(next(iter(d.items())) for d in a)]
[{'m': 111}, {'c': 'z'}]