Amacım meyveler listesindeki kelimelerden harf sayısı eşit olanları bir kümede olacak şekilde bir sözlük oluşturmak. aşağıdaki kod satırı her key için sadece 1 meyve atıyor. aşağıdaki çıktıyı alabilmem için neyi farklı yapabilirim. Teşekkür ederim.
(<<<< olmasını istediğim çıktı:
{
3:[“muz”,“nar”],
4: [‘kivi’,“elma”,“erik”,“üzüm” ]
5: [‘havuç’, “armut”,“kiraz”,“kavun”]
6: [‘karpuz’],
7: [‘şeftali’],
8: [‘portakal’],
9: [‘mandalina’]
} <<<<<<
(kod satırı)
meyveler[“elma”,“armut”,“şeftali”,“kiraz”,“muz”,“erik”,“üzüm”,“nar”,“karpuz”,“kavun”,“kivi”,“havuç”,“portakal”,“mandalina”]
sozluk={}
t=set()
for i in meyveler:
t.add(len(i))
p=list(t)
for i in meyveler:
q=0
while q<len(p):
if len(i)==p[q]:
sozluk.update({p[q]:[i]})
q+=1
print(sozluk)
def meyveler():
meyveler=["elma","armut","şeftali","kiraz","muz","erik","üzüm","nar","karpuz","kavun","kivi","havuç","portakal","mandalina"]
sonuc=[]
sayı=int(input("Sayı gir :"))
for one in meyveler:
if sayı==len(one):
sonuc=sonuc+[one]
else:
if len(sonuc)==0:
print("Bulunamadı")
else:
print(sonuc)
meyveler = ["muz", "nar", "elma", "kivi", "ayva", "armut", "çilek"]
# uzunluklar isimli bir liste oluşturalım.
uzunluklar = []
# Her bir meyvenin harf uzunluğunu, uzunluklar listesine ekleyelim.
# Bunun için for döngüsü ve len() methodu kullanalım.
for meyve in meyveler:
uzunluklar.append(len(meyve))
# Uzunluklar listesindeki değerlerin tekrar etmemesi için set() kullanalım.
uzunluklar = set(uzunluklar)
# Şimdi boş bir sözlük oluşturalım.
sozluk = {}
# iç içe for döngüsü ve count() kullanarak çözüme ulaşalım.
for uzunluk in uzunluklar:
alt_liste = []
for meyve in meyveler:
if len(meyve) == uzunluk:
alt_liste.append(meyve)
sozluk.update({uzunluk: alt_liste})
print(sozluk)
Sİzin hatanız sanırım burada:
Orada listeye ekleme yapmak yerine her seferinde listeyi yeniden atıyorsunuz.
Mesela bir öncesinde [elma] iken, sonrasında [kivi] olarak değiştiriyorsunuz gibi.
meyveler=["elma","armut","şeftali","kiraz","muz","erik","üzüm","nar","karpuz","kavun","kivi","havuç","portakal","mandalina"]
# max 20 harfli meyve olsun
sonuc=[None] * 20
# kaç harfli ise o index e koyuyoruz
for i in meyveler:
index = len(i)
if sonuc[index] is None:
sonuc[index] = [i]
else:
sonuc[index].append(i)
# None olanları atlayarak değeri olanlardan sözlük yapıyor
res_dct = { i: sonuc[i] for i in range(len(sonuc)) if sonuc[i]}
print(res_dct)
import itertools
meyveler=["elma","armut","şeftali","kiraz","muz","erik","üzüm","nar","karpuz","kavun","kivi","havuç","portakal","mandalina"]
print({ k: list(g) for k, g in itertools.groupby(sorted(meyveler, key=len), key=len) })