Как Вы имеете дело с m.. n отношения в реляционной базе данных?

Что вы можете сделать, это создать еще один словарь с ключом в качестве значения других словарей, а значения этого словаря - это набор ключей этого словаря. По сути, вы возвращаете свой словарь, где ключи - это значения, а значения - это набор ключей. Поэтому, если у вас одинаковые значения, ваши ключи для этих значений будут частью этого ключа.

Вот как выглядит 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
17
задан Bill the Lizard 8 October 2008 в 17:09
поделиться