在字典列表中找到重复的索引

时间:2019-04-26 09:01:16

标签: python list dictionary duplicates

像这样,我里面有很多词典,其中每个词典都有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 个答案:

答案 0 :(得分:3)

您可以使用defaultdict和for循环来使其O(n)

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

indexes = defaultdict(list)

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