Sözlüğü bool ifadeler şeklinde açma

**dict yazarak bir fonksiyona:

**{"a":"value"}
function(a = "value")

şeklinde değer gönderebiliyorduk peki bir sözlükle bir fonksiyona
function(a == 5)
gibi değerleri iletebilmemizin bir yolu var mı?

Bunu bir sözlük üreteci kullanarak yapabilirsiniz:

dict = {"a": "value"}
yeni = {i: bool(dict[i]) for i in dict}

Daha sonra yine bir sözlük gibi kullanabilirsiniz.

1 Beğeni

Ilk ornekteki a, fonksiyonun parametresinin ismi ve = isareti onu arguman olarak verilecek degerden ayirmak icin kullaniliyor.

Ikinci ornekte ise arguman olarak verilen tek bir deger var; uc oge de bir ifadenin parcasi. a mevcut scope’taki isim cozumu kurallarina gore degeri cozulecek bir isim, == ise bir operator.

Yani yapmak veya elde etmek istedigin seyi ilk formdan bagimsiz olarak sorman daha faydali olabilir.

1 Beğeni

nasıl yani hocam açıkçası anlayamadım

^^^ Bu sorunun,

^^^ bu bilgiyle hic bir alakasi yok.

1 Beğeni

peki 2. şekilde bir yöntem için yani bir sözlükle bir fonksiyona o şekilde gönderebilmek için bir yol yok mu

Tam ornekle aciklarsan bulabiliriz. Birden fazla parametre ve sozluk elemani olsun lutfen.

hocam yapmak istediği şuydu bir sözlüğüm var ve bunu == şeklinde atmak birden fazla parametreyle örnek verecek olursak:

dic = {"param1":"value1" ,
"param2":"value2",
"param3":"value"}

bu ifadeyi bir fonksiyona şu şekilde atmaktı:

my_f(param1 == “value1”,param2 == “value2”, param3 == “value4”)

burda benim kaçırdığımsa sizin dediğiniz gibi sandığım gibi bunun bir bool operatörü vs. olmamasıydı. printleyince fark ettim ki aslında bir obje oluşturuluyor. kendimce şu şekilde bir çözüm ürettim:

jsonDict = json.loads(request.form.get(“select”))
l =
for i in jsonDict.keys():
l.append(getattr(application.c,i) == jsonDict[i])

artık *l ifadesini göndereceğim fonkisyon bunları algılayabilyo. teşekkürler

ve ayrıca fark ettim ki python’da bilmediğim daha çooook şey var…

Fonksiyonun *l ile bir dizi arguman beklemektense tek bir dict veya list alip okumasi daha mantikli olabilir. Koda bakmadan konusuyorum tabi, olmaya da bilir.

Hepimizin bilmedigi cok sey var da en azindan is gormeye engel olmuyor :slight_smile:

1 Beğeni

fonksiyonu ben yazmış olsam bunu kessinlikle yapardım:slight_smile:

Konu karışmış ama çok bilinmeyen konuyla biraz alakalı bir bilgi vereyim sözlük genişletmeyle ilgili…

dict1 = {"key1":"value1"}
dict2 = {"key2":"value2"}
yenidict = {**dict1,**dict2}

Bu şekilde elinde hazır bir dict varsa ikisini genişletebilirsin.

2 Beğeni