Что вы можете сделать, это создать еще один словарь с ключом в качестве значения других словарей, а значения этого словаря - это набор ключей этого словаря. По сути, вы возвращаете свой словарь, где ключи - это значения, а значения - это набор ключей. Поэтому, если у вас одинаковые значения, ваши ключи для этих значений будут частью этого ключа.
Вот как выглядит one_dict после преобразования:
{(('ABC', 0.4), ('ABD', 0.6)): {'A003', 'A001', 'A004'},
(('ABC', 0.5), ('ABD', 0.4), ('EFG', 0.1)): {'A002'}})
Тогда это просто вопрос итерации и печати.
from collections import defaultdict
list1 = [
{"A001": {"ABC": 0.4, "ABD": 0.6}},
{"A002": {"ABC": 0.5, "ABD": 0.4, "EFG": 0.1}},
{"A003": {"ABC": 0.4, "ABD": 0.6}},
{"A004": {"ABC": 0.4, "ABD": 0.6}},
]
one_dict = defaultdict(set)
for r in list1:
one_dict[tuple([*r.values()][0].items())].add([*r.keys()][0])
print(f"{'Account Name':<15}{'Duplicates'}")
for k, v in one_dict.items():
for i in v:
print(f"{i:<15}{', '.join(v - {i}) if 1 < len(v) else 'No duplicate'}")
Выход:
Account Name Duplicates
A001 A003, A004
A003 A001, A004
A004 A001, A003
A002 No duplicate