import random
hayvanlar= {
'Kara':{
'Tavşan': 1,
'Kedi': 2
},
'Hava':{
'Martı': 5,
'Arı': 7
},
'Su':{
'Hamsi': 10,
'Palamut': 4,
}
}
for i in range(2):
habitat = random.choice([i for i in hayvanlar])
animal = random.choice([i for i in hayvanlar[habitat] ])
print(f"{animal} { hayvanlar[habitat][animal] } tane bulunmaktadır")
Tabii her habitattan sadece bir canlının seçilmesini istiyorsanız bu durumda bu kodlar istediğiniz çıktıyı vermeyebilir (sizin yönteminiz çalışır) ancak sadece iki tane hayvanın bastırılmasını istiyorsanız basitçe bir döngü kurabilirsiniz.
for i in range(2):
habitat = random.choice([i for i in hayvanlar])
animal = random.choice([i for i in hayvanlar[habitat] ])
print(f"{animal} { hayvanlar[habitat][animal] } tane bulunmaktadır")
hayvanlar.pop(habitat)
Hocam bu şekilde tamam mıdır? Ortak noktaya vardık sanırım sonunda
Hatta şöyle daha güzel olabilir belki
new_hayvanlar = hayvanlar.copy()
for i in range(2):
habitat = random.choice([i for i in new_hayvanlar])
animal = random.choice([i for i in new_hayvanlar[habitat] ])
print(f"{animal} { hayvanlar[habitat][animal] } tane bulunmaktadır")
new_hayvanlar.pop(habitat)
Hocam ben bu konuyu unutturmamaya niyetlendim
Bu sözlük yapısını liste şeklinde nasıl yapabiliriz. Ve içerisindeki bilgileri nasıl çekeriz?
Benim yaşadığım sorun şu ki;
Bunun listesini yapmak.
Bir de index numarası ile çekmek zorunda mıyız? Sözlükteki gibi olmuyor mu?
Liste elemanlarına sözlüklerdeki gibi bracket notation ile mi erişmek istiyorsunuz ? Böyle bir şey imkansız ve mantıksız da zaten
Sözlüklerin içerisinde bildiğiniz gibi key’ler oluyor. Key’lerin value’larına erişmek için de bracket notation kullanıyoruz: dictionary["Key"]
Fark ettiğiniz üzere de key’lere erişmek için bize lazım olan key’in ismini kullanıyoruz ve bu bir string.
Şimdi aynısını listelerde düşünmeye çalışın.
array = [0, 1, 2, 3, 4, 5, "str"]
array[]
Ne gelecek parantezlerin arasına ? Mesela 4’e erişeceksiniz ve bracket notation kullanacaksınız sözlüklerdeki gibi. Sizce de mantıksız değil mi ?
Sözlükler ögelerine bracket notation ile erişildiği için değerli, listeler de ögelerine index numarası ile erişildiği için değerli. İkisini birbirine karıştırmanın bir anlamı yok. Duruma göre biri daha avantajlı olur ve onu tercih edersiniz.
Yapmayın
Bu yazdıklarınız da yukarıda yazdıklarımla alakalı zaten:
Her şeye rağmen yine de bu sözlüğün liste olmasını istiyorsanız bu şöyle görünebilir:
Ama böyle bir şey için direkt sözlük kullanmak daha iyi bir tercih olacaktır.
Çok spesifik durumlarda belki böyle bir şeye ihtiyacınız olabilir ancak zannetmiyorum.
def oto_goster(self):
for i in otomobillerr:
n = otomobillerr[i]['marka']
if self.ksecim == n:
print("""
Marka :{}
Model :{}
Üretim:{}
Renk :{}
Fiyat :{}\n""".format(otomobillerr[i]['marka'],otomobillerr[i]['model'],otomobillerr[i]['üretim'],otomobillerr[i]['renk'],otomobillerr[i]['fiyat']))
continue
Üsteki sözlükte fiyat değeri eksik mesela (Bilinçli veya bilinçsiz) Bu çıktıyı nasıl hata kodu vermeden yazdırabiliriz?