для этого массива
arr = [ ['Alexander', 12345],
['Elena', 45678],
['John', 76542],
['Alexander', 43256],
['John', 45024],
['David', 69438] ]
Предполагая, что вы хотите сохранить первый встреченный номер,
names = [a[0] for a in arr]
names_unique = list(set(names))
newarr = [ [name, arr[names.index(name)][1] ] for name in names_unique ]
Это даст:
[['Elena', 45678],
['David', 69438],
['Alexander', 12345],
['John', 76542]]
Это не быстрое решение, но для массивов длиной менее миллиона это будет сделано за секунду. .index
может быть довольно дорогим для огромных массивов, поэтому в этом случае вы можете использовать классический сингл для цикла или попытаться получить предварительно отсортированный массив.