Sqlite verisi ile listeden işlem yapmak

İyi günler arkadaşlar. Bir konuda yardımınıza ihtiyacım var. Bir türlü halledemedim yazamadım kodu. Nasıl yapmam gerektiğini bulamadım. Şöyleki veritabanından şu şekilde bir kolon çektim

(1,2,5,8,13)
(5,4,9,3)

Elimdede şu şekilde bir liste var

[ [[1,2], 8],
[[2,5], 4],
[[4,9], 2],
[[5,4], 7],
[[5,8], 8],
[[5,9], 6],
[[9,3], 2],
]

Veritabanından çektiğim şu veriye bakıyoum (5,4,9,3) sonra listeden şunu çekmem lazım 5 den sonra 4 geliyor [5,4] ün karşılığı 7, 4 ten sonra 9 geliyor [4,9] un karşılığı 2, sonra [9,3] ün karşılığı 2 bunları toplaya toplaya gitmesi lazım yani (5,4,9,3) için bana sonucu 11 vermesi gerek. Mümkün müdür böyle bir yazım

Merhaba, şöyle bir algoritma kurdum ama sonucun 13 olması gerektiğine emin misiniz? Ben 11 buldum.

liste = [
  [[1, 2], 8],
  [[2, 5], 4],
  [[4, 9], 2],
  [[5, 4], 7], 
  [[5, 8], 8],
  [[5, 9], 6],
  [[9, 3], 2]
]
data = [5, 4, 9, 3]

data = [data[i:i + 2] for i in range(len(data))][:-1]

toplam = 0
for row in liste:
    if row[0] in data:
        toplam += row[1]

print(toplam)

Pardon yanlış topladım evet 11 cevap koduda hemen deniyorum teşekkür ederim

Öncelikle şu kısmı açıklayabilir misiniz ne yaptığınızı.

data = [data[i:i + 2] for i in range(len(data))][:-1]

Birde data veriside liste şeklinde yani aşağıdai gibi olursa nasıl döngüye sokacağım

data = [
[5, 4, 9, 3],
[1, 3, 7, 6, 8, 9, 13]
]

:information_source:  Biraz geç dönüş yaptım, kusura bakmayın.

Tabi:

Bu kısım, şu veriyi [5, 4, 9, 3], şu hale [[5, 4], [4, 9], [9, 3]] getirmek için.

Diğer bir yazımı ise şu:

length_data = len(data)

for i in range(len(data)):
    data.append(data[i:i + 2])

data = data[length_data:-1]

Tabi gördüğünüz gibi bu daha karışık. O sebepten liste üreteçleri ile yaptım.

Detaylı bilgi için şuraya bakabilirsiniz: Listeler ve Demetler — Yazbel Python Belgeleri


Onu da şu şekilde yapabilirsiniz:

liste = [
  [[1, 2], 8],
  [[2, 5], 4],
  [[4, 9], 2],
  [[5, 4], 7], 
  [[5, 8], 8],
  [[5, 9], 6],
  [[9, 3], 2]
]
data = [[5, 4, 9, 3], [1, 3, 7, 6, 8, 9, 13]]

def işle(data, liste):
    data = [data[i:i + 2] for i in range(len(data))][:-1]

    toplam = 0
    for row in liste:
        if row[0] in data:
            toplam += row[1]

    return toplam

for subdata in data:
    print(işle(subdata, liste))
1 Beğeni

Estafirullah ne geçi döndüğünüz için sağolun asıl. Ayrıca kod içinde çok çok teşekkür ederim.

1 Beğeni