найти дубликаты индексов в списке диктов - PullRequest
2 голосов
/ 26 апреля 2019

У меня внутри огромный список словарей, подобных этим, в каждом словаре по 4 ключа.

l = [dict1 , dict2, dict3, dict4 .......]

dict1 = {'text': 'XYZ', 'x': 961, 'y': 420.59375, 'width': 141, 'height': 30}

dict2 = {'text': 'ABC', 'x': 962, 'y': 13.09375, 'width': 50, 'height': 33}

dict3 = {'text': 'XYZ', 'x': 961, 'y': 420.59375, 'width': 141, 'height': 30}

dict4 = {'text': 'ABC', 'x': 962, 'y': 13.09375, 'width': 50, 'height': 33}

Я хочу найти все индексы списка, у которых dict['x'] одинаково.

подход инициалов, который мне приходит в голову, - это O (n ^ 2) подход, в котором я буду повторять каждый индекс и сравнивать его с любым другим индексом.

Пожалуйста, помогите мне с любым эффективным подходом, если таковой имеется

Ожидаемый результат:

{0,2}, так как dict1 и dict3 имеют одинаковые x

{1,3}, так как dict2 и dict4 имеют одинаковые x

1 Ответ

3 голосов
/ 26 апреля 2019

Вы можете использовать defaultdict и цикл for, чтобы сделать его O(n):

l = [dict1 , dict2, dict3, dict4.......]

indexes = defaultdict(list)

for i, d in enumerate(l):
    indexes[d["x"]].append(i)
...