{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Sözlükler\n", "\n", "Sözlükler veya İngilizce ismiyle dictionaryler aynı gerçek hayattaki sözlükler gibi davranan bir veritipidir. Bu veritipi, şimdiye kadar gördüğümüz tüm veritiplerinden yapısı gereği farklıdır. Sözlüğün içindeki her bir eleman indeks ile değil, anahtar (key), değer (value) olarak tutulur. Bu anlamda gerçek hayattaki sözlüklere oldukça benzerler. Örneğin, elimize bir ingilizce-Türkçe sözlük alıp **freedom** kelimesini(key ya da anahtar) aradığımız zaman karşılık değer **özgürlük** (değer ya da value) olarak karşımıza çıkar. Sözlükleri de bu şekilde düşünebiliriz.\n", "\n", "Şimdi isterseniz bir sözlük oluşturarak konumuza başlayalım." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sözlük Oluşturmak\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Süslü Parantez ve iki nokta (:) ile anahtar değerlerimizi yerleştirelim.\n", "sözlük1 = {\"sıfır\":0,\"bir\":1,\"iki\":2,\"üç\":3}\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'bir': 1, 'iki': 2, 'sıfır': 0, 'üç': 3}" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sözlük1" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Boş bir sözlük\n", "sözlük2 = {}" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Boş bir sözlük - dict() ile \n", "sözlük2 = dict()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sözlük2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sözlük Değerlerine Erişmek ve Sözlüğe Değer Eklemek\n", "Sözlük veritipinin gerçek hayattaki sözlüklere çok benzediğini söylemiştik. Öyleyse, bir değeri (value) elde etmek için, indeksleri değil anahtarları (key) kullanacağız.\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'bir': 1, 'iki': 2, 'sıfır': 0, 'üç': 3}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sözlük1" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# \"bir\" anahtarına karşılık gelen değeri buluyoruz.\n", "sözlük1[\"bir\"]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# \"iki\" anahtarına karşılık gelen değeri buluyoruz.\n", "sözlük1[\"iki\"]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "'beş'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Olmayan bir anahtar\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0msözlük1\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"beş\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mKeyError\u001b[0m: 'beş'" ] } ], "source": [ "# Olmayan bir anahtar\n", "sözlük1[\"beş\"]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "a = {\"bir\" : [1,2,3,4], \"iki\": [[1,2],[3,4],[5,6]],\"üç\" : 15}" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[1, 2], [3, 4], [5, 6]]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# \"iki\" anahtarının değeri\n", "a[\"iki\"]" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# İçiçe listeleri biliyoruz.\n", "a[\"iki\"][1][1]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[\"üç\"]" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[\"üç\"] += 5\n", "a[\"üç\"]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'bir': [1, 2, 3, 4], 'iki': [[1, 2], [3, 4], [5, 6]], 'üç': 20}" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bir sözlüğe **dinamik** olarak da eleman ekleyebiliriz.\n" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Sözlük oluşturalım.\n", "a = {\"bir\":1,\"iki\":2,\"üç\":3}\n" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'bir': 1, 'dört': 4, 'iki': 2, 'üç': 3}" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[\"dört\"] = 4 \n", "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dikkat ederseniz yeni eklediğimiz anahtar ve değer sözlüğün sonuna eklenmedi. Burada sözlüklerin bir özelliğini daha görüyoruz. Sözlükler diğer veritiplerinden farklı olarak sıralı olmayan bir veritipidir.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### İç içe Sözlükler\n", "\n", "Tıpkı listeler gibi, iç içe sözlükler de oluşturulabilir.\n", "\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# İç içe sözlük\n", "\n", "a = {\"sayılar\":{\"bir\":1,\"iki\":2,\"üç\":3},\"meyveler\":{\"kiraz\":\"yaz\",\"portakal\":\"kış\",\"erik\":\"yaz\"}}" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[\"sayılar\"][\"bir\"]" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'yaz'" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[\"meyveler\"][\"kiraz\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Temel Sözlük Metodları\n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "yeni_sözlük = {\"bir\":1,\"iki\":2,\"üç\":3}" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_values([1, 2, 3])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# values() metodu sözlüğün değerlerini(value) bir liste olarak döner.\n", "yeni_sözlük.values()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['bir', 'iki', 'üç'])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# keys() metodu sözlüğün anahtarlarını(key) bir liste olarak döner.\n", "yeni_sözlük.keys()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_items([('bir', 1), ('iki', 2), ('üç', 3)])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# items() metodu sözlüğün anahtar ve değerlerini bir liste içinde demet olarak döner.\n", "yeni_sözlük.items()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bu konuda sözlüklerin yapısını biraz anladıysak iyi yol katetmişiz demektir. Zaten sözlükleri ilerde daha derinlemesine göreceğimiz için konumuzu burada bitirebiliriz.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }