Şöyle bir şey yapabilirsiniz:
lst = [1, 2, 3, 4, 5, 2, 3, 1, 3, 3, 2, 4, 5]
arr = set(lst)
print(dict(zip(arr, [[i] for i in range(len(arr))])))
> {1: [0], 2: [1], 3: [2], 4: [3], 5: [4]}
Daha kullanışlı olması açısından bir fonksiyon yaratırsak:
lst = [1, 2, 3, 4, 5, 2, 3, 1, 3, 3, 2, 4, 5]
def key_index(arr):
arr = set(arr)
return dict(zip(arr, [[i] for i in range(len(arr))]))
print(key_index(lst))
> {1: [0], 2: [1], 3: [2], 4: [3], 5: [4]}
Bu durumun sebebine gelecek olursak bence bunu bir debugging ile çok daha iyi anlayabilirsiniz.
Şöyle buyurun: RecApp-2022-05-31-10:55:02
Debugging’i izlediğinizde göreceksiniz ki listelerin boş olmasının sebebi
l_ind
listesinde .clear()
metodunu çağırmanız. Bu satırı silerek s_ind
’e bakacak olursak…
{1: [0, 7, 1, 5, 10, 2, 6, 8, 9, 3, 11, 4, 12], 2: [0, 7, 1, 5, 10, 2, 6, 8, 9, 3, 11, 4, 12], 3: [0, 7, 1, 5, 10, 2, 6, 8, 9, 3, 11, 4, 12], 4: [0, 7, 1, 5, 10, 2, 6, 8, 9, 3, 11, 4, 12], 5: [0, 7, 1, 5, 10, 2, 6, 8, 9, 3, 11, 4, 12]}
Böyle bir çıktı görüyoruz. Yine beklediğimiz çıktı değil elbette çünkü kodunuzda bir mantık hatası var gibi görünüyor.
Açıkçası burada ne yapmaya çalıştığınızı anlayamadım. Muhtemelen kodunuz beklemediğiniz gibi çalıştı, belki de iç içe for loop
kullanmak işleri biraz komplike etmiş olabilir…