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