forked from yazbel/python-istihza
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsozluklerin_metotlari.html
646 lines (562 loc) · 51.1 KB
/
sozluklerin_metotlari.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
<!DOCTYPE html>
<html lang="tr">
<html lang="tr">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta content="Python 3.x'te sözlükler adlı veri tipinin metotları" name="description" />
<meta content="python, sözlük, sözlükler, dictionary, metotlar, get, items, keys, values" name="keywords" />
<title>Sözlüklerin Metotları — Python 3 için Türkçe Kılavuz</title>
<link rel="stylesheet" href="_static/pyramid.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/language_data.js"></script>
<script src="_static/translations.js"></script>
<link rel="search" title="Ara" href="search.html" />
<link rel="next" title="Kümeler ve Dondurulmuş Kümeler" href="kumeler_ve_dondurulmus_kumeler.html" />
<link rel="prev" title="Sözlükler" href="sozlukler.html" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
</head><body>
<div class='header'><a href='https://yazbel.com'>yazbel.com</a></div>
<ul class='navbar'>
<li><a href="#"><del>pdf desteği sonlanmıştır</del></a></li>
<li class="forum"><a href="http://forum.yazbel.com">forum</a></li>
</ul>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="kumeler_ve_dondurulmus_kumeler.html" title="Kümeler ve Dondurulmuş Kümeler"
accesskey="N">sonraki</a></li>
<li class="right" >
<a href="sozlukler.html" title="Sözlükler"
accesskey="P">önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">Sözlüklerin Metotları</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="body" role="main">
<div class="section" id="sozluklerin-metotlari">
<h1>Sözlüklerin Metotları<a class="headerlink" href="#sozluklerin-metotlari" title="Bu başlık için kalıcı bağlantı">¶</a></h1>
<p>Tıpkı öteki veri tiplerinde olduğu gibi, sözlüklerin de birtakım metotları
bulunur. Bu bölümde sözlüklerin şu metotlarını inceleyeceğiz:</p>
<ol class="arabic simple">
<li><p><code class="docutils literal notranslate"><span class="pre">keys()</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">values()</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">items()</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">get()</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">clear()</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">copy()</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">fromkeys()</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">pop()</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">popitem()</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">setdefault()</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">update()</span></code></p></li>
</ol>
<p>İlk olarak <code class="docutils literal notranslate"><span class="pre">keys()</span></code> metoduyla başlayalım.</p>
<div class="section" id="keys">
<h2>keys()<a class="headerlink" href="#keys" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Sözlükleri tarif ederken, sözlüklerin anahtar-değer çiftlerinden oluşan bir veri
tipi olduğunu söylemiştik. Bir sözlüğü normal yollardan ekrana yazdırırsanız
size hem anahtarları hem de bunlara karşılık gelen değerleri verecektir. Ama
eğer bir sözlüğün sadece anahtarlarını almak isterseniz <code class="docutils literal notranslate"><span class="pre">keys()</span></code> metodundan
yararlanabilirsiniz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sözlük</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"a"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="gp">... </span> <span class="s2">"b"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="gp">... </span> <span class="s2">"c"</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span>
<span class="gp">... </span> <span class="s2">"d"</span><span class="p">:</span> <span class="mi">3</span><span class="p">}</span>
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">sözlük</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
<span class="go">dict_keys(['b', 'c', 'a', 'd'])</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, <code class="docutils literal notranslate"><span class="pre">sözlük.keys()</span></code> komutu bize bir <cite>dict_keys</cite> nesnesi veriyor.
Bu nesneyi programınızda kullanabilmek için isterseniz, bunu listeye, demete
veya karakter dizisine dönüştürebilirsiniz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">liste</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">sözlük</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
<span class="gp">>>> </span><span class="n">liste</span>
<span class="go">['b', 'c', 'a', 'd']</span>
<span class="gp">>>> </span><span class="n">demet</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">sözlük</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
<span class="gp">>>> </span><span class="n">demet</span>
<span class="go">('b', 'c', 'a', 'd')</span>
<span class="gp">>>> </span><span class="n">kardiz</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sözlük</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
<span class="gp">>>> </span><span class="n">kardiz</span>
<span class="go">'bcad'</span>
</pre></div>
</div>
<p>Son örnekte sözlük anahtarlarını karakter dizisine dönüştürmek için <code class="docutils literal notranslate"><span class="pre">str()</span></code>
fonksiyonunu değil, karakter dizilerinin <code class="docutils literal notranslate"><span class="pre">join()</span></code> adlı metodunu kullandığımıza
dikkat edin. Çünkü <code class="docutils literal notranslate"><span class="pre">tuple()</span></code> ve <code class="docutils literal notranslate"><span class="pre">list()</span></code> fonksiyonlarının aksine <code class="docutils literal notranslate"><span class="pre">str()</span></code>
fonksiyonu, sözlükteki anahtarların nasıl bir ölçüte göre karakter dizisine
çevrileceğine dair bir kural içermez. Zira siz bu sözlük anahtarlarını pek çok
farklı şekilde karakter dizisine çevirebilirsiniz. Örneğin öğeleri karakter
dizisi içine yerleştirirken öğelerin arasına virgül koymak isteyebilirsiniz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">kardiz</span> <span class="o">=</span> <span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sözlük</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
<span class="gp">>>> </span><span class="n">kardiz</span>
<span class="go">'b, c, a, d'</span>
</pre></div>
</div>
<p>Eğer sözlük anahtarlarını <code class="docutils literal notranslate"><span class="pre">str()</span></code> fonksiyonu yardımıyla karakter dizisine
dönüştürmeye kalkışırsanız beklemediğiniz bir çıktı alırsınız.</p>
</div>
<div class="section" id="values">
<h2>values()<a class="headerlink" href="#values" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p><code class="docutils literal notranslate"><span class="pre">keys()</span></code> metodu bir sözlüğün anahtarlarını veriyor. Bir sözlüğün değerlerini
ise <code class="docutils literal notranslate"><span class="pre">values()</span></code> metodu verir:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sözlük</span>
<span class="go">{'b': 1, 'c': 2, 'a': 0, 'd': 3}</span>
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">sözlük</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
<span class="go">dict_values([1, 2, 0, 3])</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, bu metottan bir <cite>dict_values</cite> nesnesi alıyoruz. Tıpkı
<code class="docutils literal notranslate"><span class="pre">keys()</span></code> metodunda olduğu gibi, <code class="docutils literal notranslate"><span class="pre">values()</span></code> metodunda da bu çıktıyı başka
veri tiplerine dönüştürme imkanına sahibiz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">liste</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">sözlük</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
<span class="gp">>>> </span><span class="n">liste</span>
<span class="go">[1, 2, 0, 3]</span>
<span class="gp">>>> </span><span class="n">demet</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">sözlük</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
<span class="gp">>>> </span><span class="n">demet</span>
<span class="go">(1, 2, 0, 3)</span>
</pre></div>
</div>
<p>Yalnız bu verileri karakter dizisine dönüştürmeye çalıştığınızda ufak bir
problemle karşılaşacaksınız:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">kardiz</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sözlük</span><span class="o">.</span><span class="n">values</span><span class="p">())</span>
<span class="gt">Traceback (most recent call last):</span>
File <span class="nb">"<stdin>"</span>, line <span class="m">1</span>, in <span class="n"><module></span>
<span class="gr">TypeError</span>: <span class="n">sequence item 0: expected str instance, int found</span>
</pre></div>
</div>
<p>Bunun sebebi, sözlükteki değerlerin <cite>int</cite> tipinde olmasıdır. Bildiğiniz gibi,
sadece aynı tip verileri birbiriyle birleştirebiliriz. Eğer birleştirmek
istediğimiz veriler birbirinden farklı tipte ise, bunları birleştirmeden önce
bir dönüştürme işlemi yapmamız gerekir:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">kardiz</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">sözlük</span><span class="o">.</span><span class="n">values</span><span class="p">()])</span>
<span class="gp">>>> </span><span class="n">kardiz</span>
<span class="go">'1203'</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, sözlükteki değerlerin her birini, tek bir liste üreteci içinde
karakter dizisine dönüştürdük ve ortaya çıkan listeyi karakter dizilerinin
<code class="docutils literal notranslate"><span class="pre">join()</span></code> metodu yardımıyla, öğelerin arasında hiçbir boşluk bırakmadan
<cite>kardiz</cite> adlı bir karakter dizisi içine yerleştirdik. Elbette eğer isteseydik bu
öğelerin her birinin arasına bir virgül de koyabilirdik:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">kardiz</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">sözlük</span><span class="o">.</span><span class="n">values</span><span class="p">()])</span>
<span class="gp">>>> </span><span class="n">kardiz</span>
<span class="go">'1, 2, 0, 3'</span>
</pre></div>
</div>
</div>
<div class="section" id="items">
<h2>items()<a class="headerlink" href="#items" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Bu metot, bir sözlüğün hem anahtarlarını hem de değerlerini aynı anda almamızı
sağlar:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sözlük</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
<span class="go">dict_items([('a', 0), ('c', 2), ('b', 1)])</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, tek bir liste içinde iki öğeli demetler halinde hem anahtarları
hem de değerleri görebiliyoruz. Bu metot sıklıkla <code class="docutils literal notranslate"><span class="pre">for</span></code> döngüleri ile birlikte
kullanılarak bir sözlüğün anahtar ve değerlerinin manipüle edilebilmesini
sağlar:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">for</span> <span class="n">anahtar</span><span class="p">,</span> <span class="n">değer</span> <span class="ow">in</span> <span class="n">sözlük</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">{}</span><span class="s2"> = </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">anahtar</span><span class="p">,</span> <span class="n">değer</span><span class="p">))</span>
<span class="gp">...</span>
<span class="go">a = 0</span>
<span class="go">c = 2</span>
<span class="go">b = 1</span>
</pre></div>
</div>
</div>
<div class="section" id="get">
<h2>get()<a class="headerlink" href="#get" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Bu metot sözlüklerin en kullanışlı metotlarından biridir. Bu metot pek çok
durumda işinizi bir hayli kolaylaştırır.</p>
<p>Diyelim ki şöyle bir program yazdık:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python3.0</span>
<span class="n">ing_sözlük</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"dil"</span><span class="p">:</span> <span class="s2">"language"</span><span class="p">,</span> <span class="s2">"bilgisayar"</span><span class="p">:</span> <span class="s2">"computer"</span><span class="p">,</span> <span class="s2">"masa"</span><span class="p">:</span> <span class="s2">"table"</span><span class="p">}</span>
<span class="n">sorgu</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"Lütfen anlamını öğrenmek istediğiniz kelimeyi yazınız:"</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">ing_sözlük</span><span class="p">[</span><span class="n">sorgu</span><span class="p">])</span>
</pre></div>
</div>
<p>Bu programı çalıştırdığımızda eğer kullanıcı “ing_sözlük” adıyla belirttiğimiz
sözlük içinde bulunan kelimelerden birini yazarsa, o kelimenin karşılığını
alacaktır. Diyelim ki kullanıcımız soruya “dil” diye cevap verdi. Bu durumda
ekrana “dil” kelimesinin sözlükteki karşılığı olan “language” yazdırılacaktır.
Peki ya kullanıcı sözlükte tanımlı olmayan bir kelime yazarsa ne olacak? Öyle
bir durumda programımız hata verecektir. Programımız için doğru yol, hata
vermektense, kullanıcıyı kelimenin sözlükte olmadığı konusunda
bilgilendirmektir. Bunu klasik bir yaklaşımla şu şekilde yapabiliriz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">ing_sözlük</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"dil"</span><span class="p">:</span> <span class="s2">"language"</span><span class="p">,</span> <span class="s2">"bilgisayar"</span><span class="p">:</span> <span class="s2">"computer"</span><span class="p">,</span> <span class="s2">"masa"</span><span class="p">:</span> <span class="s2">"table"</span><span class="p">}</span>
<span class="n">sorgu</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"Lütfen anlamını öğrenmek istediğiniz kelimeyi yazınız:"</span><span class="p">)</span>
<span class="k">if</span> <span class="n">sorgu</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">ing_sözlük</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Bu kelime veritabanımızda yoktur!"</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">ing_sözlük</span><span class="p">[</span><span class="n">sorgu</span><span class="p">])</span>
</pre></div>
</div>
<p>Ama açıkçası bu pek verimli bir yaklaşım sayılmaz. Yukarıdaki yöntem yerine
sözlüklerin <code class="docutils literal notranslate"><span class="pre">get()</span></code> metodundan faydalanabiliriz. Bakalım bunu nasıl
yapıyoruz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="n">ing_sözlük</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"dil"</span><span class="p">:</span> <span class="s2">"language"</span><span class="p">,</span> <span class="s2">"bilgisayar"</span><span class="p">:</span> <span class="s2">"computer"</span><span class="p">,</span> <span class="s2">"masa"</span><span class="p">:</span> <span class="s2">"table"</span><span class="p">}</span>
<span class="n">sorgu</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"Lütfen anlamını öğrenmek istediğiniz kelimeyi yazınız:"</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">ing_sözlük</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">sorgu</span><span class="p">,</span> <span class="s2">"Bu kelime veritabanımızda yoktur!"</span><span class="p">))</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, burada çok basit bir metot yardımıyla bütün dertlerimizi
hallettik. Sözlüklerin <code class="docutils literal notranslate"><span class="pre">get()</span></code> adlı metodu, parantez içinde iki adet argüman
alır. Birinci argüman sorgulamak istediğimiz sözlük öğesidir. İkinci argüman ise
bu öğenin sözlükte bulunmadığı durumda kullanıcıya hangi mesajın gösterileceğini
belirtir. Buna göre, yukarıda yaptığımız şey, önce “sorgu” değişkenini sözlükte
aramak, eğer bu öğe sözlükte bulunamıyorsa da kullanıcıya, “Bu kelime
veritabanımızda yoktur!” cümlesini göstermekten ibarettir…</p>
<p>Gelin isterseniz bununla ilgili bir örnek daha yapalım.</p>
<p>Diyelim ki bir havadurumu programı yazmak istiyoruz. Bu programda kullanıcı bir
şehir adı girecek. Program da girilen şehre ait havadurumu bilgilerini ekrana
yazdıracak. Bu programı klasik yöntemle şu şekilde yazabiliriz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python3</span>
<span class="n">soru</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"Şehrinizin adını tamamı küçük harf olacak şekilde yazın:"</span><span class="p">)</span>
<span class="k">if</span> <span class="n">soru</span> <span class="o">==</span> <span class="s2">"istanbul"</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"gök gürültülü ve sağanak yağışlı"</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">soru</span> <span class="o">==</span> <span class="s2">"ankara"</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"açık ve güneşli"</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">soru</span> <span class="o">==</span> <span class="s2">"izmir"</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"bulutlu"</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Bu şehre ilişkin havadurumu bilgisi bulunmamaktadır."</span><span class="p">)</span>
</pre></div>
</div>
<p>Yukarıdaki, gayet geçerli bir yöntemdir. Ama biz istersek bu kodları “get”
metodu yardımıyla çok daha verimli ve sade bir hale getirebiliriz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python3</span>
<span class="n">soru</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">"Şehrinizin adını tamamı küçük harf olacak şekilde yazın:"</span><span class="p">)</span>
<span class="n">cevap</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"istanbul"</span><span class="p">:</span> <span class="s2">"gök gürültülü ve sağanak yağışlı"</span><span class="p">,</span>
<span class="s2">"ankara"</span><span class="p">:</span> <span class="s2">"açık ve güneşli"</span><span class="p">,</span> <span class="s2">"izmir"</span><span class="p">:</span> <span class="s2">"bulutlu"</span><span class="p">}</span>
<span class="nb">print</span><span class="p">(</span><span class="n">cevap</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">soru</span><span class="p">,</span> <span class="s2">"Bu şehre ilişkin havadurumu bilgisi bulunmamaktadır."</span><span class="p">))</span>
</pre></div>
</div>
</div>
<div class="section" id="clear">
<h2>clear()<a class="headerlink" href="#clear" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Bu kelime İngilizce’de “temizlemek” anlamına gelir. Görevi sözlükteki öğeleri
temizlemektir. Yani içi dolu bir sözlüğü bu metot yardımıyla tamamen
boşaltabiliriz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span> <span class="o">>>></span> <span class="n">lig</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"şampiyon"</span><span class="p">:</span> <span class="s2">"Adana Demirspor"</span><span class="p">,</span> <span class="s2">"ikinci"</span><span class="p">:</span> <span class="s2">"Mersin İdman Yurdu"</span><span class="p">,</span>
<span class="o">...</span> <span class="s2">"üçüncü"</span><span class="p">:</span> <span class="s2">"Adana Gençlerbirliği"</span><span class="p">}</span>
</pre></div>
</div>
<p>İsterseniz sözlüğümüzü boşaltmadan önce bu sözlükle biraz çalışalım:</p>
<p>Sözlüğümüzün öğelerine şöyle ulaşıyoruz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span> <span class="o">>>></span> <span class="n">lig</span>
<span class="p">{</span><span class="s1">'şampiyon'</span><span class="p">:</span> <span class="s1">'Adana Demirspor'</span><span class="p">,</span> <span class="s1">'ikinci'</span><span class="p">:</span> <span class="s1">'Mersin İdman Yurdu'</span><span class="p">,</span>
<span class="s1">'üçüncü'</span><span class="p">:</span> <span class="s1">'Adana Gençlerbirliği'</span><span class="p">}</span>
</pre></div>
</div>
<p>Eğer bu sözlüğün öğelerine tek tek erişmek istersek şöyle yapıyoruz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">lig</span><span class="p">[</span><span class="s2">"şampiyon"</span><span class="p">]</span>
<span class="go">'Adana Demirspor'</span>
<span class="gp">>>> </span><span class="n">lig</span><span class="p">[</span><span class="s2">"üçüncü"</span><span class="p">]</span>
<span class="go">'Adana Gençlerbirliği'</span>
</pre></div>
</div>
<p>Şimdi geldi bu sözlüğün bütün öğelerini silmeye:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">lig</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
</pre></div>
</div>
<p>Şimdi sözlüğümüzün durumunu tekrar kontrol edelim:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">lig</span>
<span class="go">{}</span>
</pre></div>
</div>
<p>Gördüğünüz gibi artık “lig” adlı sözlüğümüz bomboş. <code class="docutils literal notranslate"><span class="pre">clear()</span></code> metodunu
kullanarak bu sözlüğün bütün öğelerini sildik. Ama tabii ki bu şekilde sözlüğü
silmiş olmadık. Boş da olsa bellekte hâlâ “lig” adlı bir sözlük duruyor. Eğer
siz “lig”i ortadan kaldırmak isterseniz “del” adlı bir parçacıktan yararlanmanız
gerekir:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="k">del</span> <span class="n">lig</span>
</pre></div>
</div>
<p>Kontrol edelim:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">lig</span>
<span class="go">NameError: name 'lig' is not defined</span>
</pre></div>
</div>
<p>Gördüğünüz gibi artık “lig” diye bir şey yok… Bu sözlüğü bellekten tamamen
kaldırdık.</p>
<p><code class="docutils literal notranslate"><span class="pre">clear()</span></code> adlı metodun ne olduğunu ve ne işe yaradığını gördüğümüze göre başka
bir metoda geçebiliriz.</p>
</div>
<div class="section" id="copy">
<h2>copy()<a class="headerlink" href="#copy" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Diyelim ki elimizde şöyle bir sözlük var:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">hava_durumu</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"İstanbul"</span><span class="p">:</span> <span class="s2">"yağmurlu"</span><span class="p">,</span> <span class="s2">"Adana"</span><span class="p">:</span> <span class="s2">"güneşli"</span><span class="p">,</span> <span class="o">...</span> <span class="s2">"İzmir"</span><span class="p">:</span> <span class="s2">"bulutlu"</span><span class="p">}</span>
</pre></div>
</div>
<p>Biz bu sözlüğü kopyalamak istiyoruz. Hemen şöyle bir şey deneyelim:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">yedek_hava_durumu</span> <span class="o">=</span> <span class="n">hava_durumu</span>
</pre></div>
</div>
<p>Artık elimizde aynı sözlükten iki tane var:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">hava_durumu</span>
<span class="go">{'İstanbul': 'yağmurlu', 'Adana': 'güneşli', 'İzmir': 'bulutlu'}</span>
<span class="gp">>>> </span><span class="n">yedek_hava_durumu</span>
<span class="go">{'İstanbul': 'yağmurlu', 'Adana': 'güneşli', 'İzmir': 'bulutlu'}</span>
</pre></div>
</div>
<p>Şimdi hava_durumu adlı sözlüğe bir öğe ekleyelim:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">hava_durumu</span><span class="p">[</span><span class="s2">"Mersin"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"sisli"</span>
<span class="gp">>>> </span><span class="n">hava_durumu</span>
<span class="go">{'İstanbul': 'yağmurlu', 'Adana': 'güneşli', 'Mersin': 'sisli', 'İzmir': 'bulutlu'}</span>
</pre></div>
</div>
<p>Şimdi bir de yedek_hava_durumu adlı sözlüğün durumuna bakalım:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">yedek_hava_durumu</span>
<span class="go">{'İstanbul': 'yağmurlu', 'Adana': 'güneşli', 'Mersin': 'sisli', 'İzmir': 'bulutlu'}</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, hava_durumu adlı sözlüğe yaptığımız ekleme yedek_hava_durumu
adlı sözlüğü de etkiledi. Hatırlarsanız buna benzer bir durumla daha önce
listeleri anlatırken de karşılaşmıştık. Çünkü varolan bir sözlüğü veya listeyi
başka bir değişkene atadığımızda aslında yaptığımız şey bir kopyalama işleminden
ziyade bellekteki aynı nesneye gönderme yapan iki farklı isim belirlemekten
ibaret. Yani sözlüğümüzü bellekteki bir nesne olarak düşünürsek, bu nesneye
atıfta bulunan, “hava_durumu” ve “yedek_hava_durumu” adlı iki farklı isim
belirlemiş oluyoruz. Eğer istediğimiz şey bellekteki nesneden iki adet
oluşturmak ve bu iki farklı nesneyi iki farklı isimle adlandırmak ise yukarıdaki
yöntemi kullanmak istemediğiniz sonuçlar doğurabilir. Yani amacınız bir sözlüğü
yedekleyip orijinal sözlüğü korumaksa ve yukarıdaki yöntemi kullandıysanız, hiç
farkında olmadan orijinal sözlüğü de değiştirebilirsiniz. İşte böyle durumlarda
imdadımıza sözlüklerin “copy” metodu yetişecek. Bu metodu kullanarak varolan bir
sözlüğü gerçek anlamda kopyalayabilir, yani yedekleyebiliriz…</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">hava_durumu</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"İstanbul"</span><span class="p">:</span> <span class="s2">"yağmurlu"</span><span class="p">,</span> <span class="s2">"Adana"</span><span class="p">:</span> <span class="s2">"güneşli"</span><span class="p">,</span> <span class="o">...</span> <span class="s2">"İzmir"</span><span class="p">:</span> <span class="s2">"bulutlu"</span><span class="p">}</span>
</pre></div>
</div>
<p>Şimdi bu sözlüğü yedekliyoruz. Yani kopyalıyoruz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">yedek_hava_durumu</span> <span class="o">=</span> <span class="n">hava_durumu</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</pre></div>
</div>
<p>Bakalım hava_durumu adlı sözlüğe ekleme yapınca yedek_hava_durumu adlı sözlüğün
durumu ne oluyor?</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">hava_durumu</span><span class="p">[</span><span class="s2">"Mersin"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"sisli"</span>
<span class="gp">>>> </span><span class="n">hava_durumu</span>
<span class="go">{'İstanbul': 'yağmurlu', 'Adana': 'güneşli', 'Mersin': 'sisli', 'İzmir':</span>
<span class="go">'bulutlu'}</span>
</pre></div>
</div>
<p>yedek_hava_durumu adlı sözlüğe bakalım:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">yedek_hava_durumu</span>
<span class="go">{'İstanbul': 'yağmurlu', 'Adana': 'güneşli', 'İzmir': 'bulutlu'}</span>
</pre></div>
</div>
<p>Gördüğünüz gibi bu defa sözlüklerin birinde yapılan değişiklik öbürünü
etkilemedi… copy metodu sağolsun!…</p>
</div>
<div class="section" id="fromkeys">
<h2>fromkeys()<a class="headerlink" href="#fromkeys" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p><code class="docutils literal notranslate"><span class="pre">fromkeys()</span></code> metodu öteki metotlardan biraz farklıdır. Bu metot mevcut sözlük
üzerinde işlem yapmaz. <code class="docutils literal notranslate"><span class="pre">fromkeys()</span></code>’in görevi yeni bir sözlük oluşturmaktır.
Bu metot yeni bir sözlük oluştururken listeler veya demetlerden yararlanır.
Şöyle ki:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">elemanlar</span> <span class="o">=</span> <span class="s2">"Ahmet"</span><span class="p">,</span> <span class="s2">"Mehmet"</span><span class="p">,</span> <span class="s2">"Can"</span>
<span class="gp">>>> </span><span class="n">adresler</span> <span class="o">=</span> <span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span><span class="n">elemanlar</span><span class="p">,</span> <span class="s2">"Kadıköy"</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">adresler</span>
<span class="go">{'Ahmet': 'Kadıköy', 'Mehmet': 'Kadıköy', 'Can': 'Kadıköy'}</span>
</pre></div>
</div>
<p>Gördüğünüz gibi öncelikle “elemanlar” adlı bir demet tanımladık. Daha sonra da
“adresler” adlı bir sözlük tanımlayarak, <code class="docutils literal notranslate"><span class="pre">fromkeys()</span></code> metodu yardımıyla
anahtar olarak “elemanlar” demetindeki öğelerden oluşan, değer olarak ise
“Kadıköy”ü içeren bir sözlük meydana getirdik.</p>
<p>En başta tanımladığımız “elemanlar” demeti liste de olabilirdi. Hatta tek başına
bir karakter dizisi dahi yazabilirdik oraya…</p>
</div>
<div class="section" id="pop">
<h2>pop()<a class="headerlink" href="#pop" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Bu metodu listelerden hatırlıyoruz. Bu metot listelerle birlikte
kullanıldığında, listenin en son öğesini silip, silinen öğeyi de ekrana
basıyordu. Eğer bu metodu bir sıra numarası ile birlikte kullanırsak, listede o
sıra numarasına karşılık gelen öğe siliniyor ve silinen bu öğe ekrana
basılıyordu. Bu metodun sözlüklerdeki kullanımı da az çok buna benzer. Ama
burada farklı olarak, <code class="docutils literal notranslate"><span class="pre">pop</span></code> metodunu argümansız bir şekilde kullanamıyoruz.
Yani <code class="docutils literal notranslate"><span class="pre">pop</span></code> metodunun parantezi içinde mutlaka bir sözlük öğesi belirtmeliyiz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sepet</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"meyveler"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"elma"</span><span class="p">,</span> <span class="s2">"armut"</span><span class="p">),</span> <span class="s2">"sebzeler"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"pırasa"</span><span class="p">,</span> <span class="s2">"fasulye"</span><span class="p">),</span>
<span class="gp">... </span><span class="s2">"içecekler"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"su"</span><span class="p">,</span> <span class="s2">"kola"</span><span class="p">,</span> <span class="s2">"ayran"</span><span class="p">)}</span>
<span class="gp">>>> </span><span class="n">sepet</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"meyveler"</span><span class="p">)</span>
</pre></div>
</div>
<p>Bu komut, sözlükteki “meyveler” anahtarını silecek ve sildiği bu öğenin değerini
ekrana basacaktır. Eğer silmeye çalıştığımız anahtar sözlükte yoksa Python bize
bir hata mesajı gösterecektir:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sepet</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"tatlılar"</span><span class="p">)</span>
<span class="go">KeyError: 'tatlılar'</span>
</pre></div>
</div>
<p>Bir program yazarken böyle bir durumla karşılaşmak istemeyiz çoğu zaman. Yani
bir sözlük içinde arama yaparken, aranan öğenin sözlükte bulunmadığı bir durumda
kullanıcıya mekanik ve anlamsız bir hata göstermek yerine, daha anlaşılır bir
mesaj iletmeyi tercih edebiliriz. Hatırlarsanız sözlüklerin <code class="docutils literal notranslate"><span class="pre">get()</span></code> metodunu
kullanarak benzer bir şey yapabiliyorduk. Şu anda incelemekte olduğumuz
<code class="docutils literal notranslate"><span class="pre">pop()</span></code> metodu da bize böyle bir imkan verir. Bakalım:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sepet</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"tatlılar"</span><span class="p">,</span> <span class="s2">"Silinecek öğe yok!"</span><span class="p">)</span>
</pre></div>
</div>
<p>Böylelikle sözlükte bulunmayan bir öğeyi silmeye çalıştığımızda Python bize bir
hata mesajı göstermek yerine, “Silinecek öğe yok!” şeklinde daha anlamlı bir
mesaj verecektir…</p>
</div>
<div class="section" id="popitem">
<h2>popitem()<a class="headerlink" href="#popitem" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p><code class="docutils literal notranslate"><span class="pre">popitem()</span></code> metodu da bir önceki bölümde öğrendiğimiz <code class="docutils literal notranslate"><span class="pre">pop()</span></code> metoduna
benzer. Bu iki metodun görevleri hemen hemen aynıdır. Ancak <code class="docutils literal notranslate"><span class="pre">pop()</span></code> metodu
parantez içinde bir parametre alırken, <code class="docutils literal notranslate"><span class="pre">popitem()</span></code> metodunun parantezi boş,
yani parametresiz olarak kullanılır. Bu metot bir sözlükten rastgele öğeler
silmek için kullanılır. Daha önce de pek çok kez söylediğimiz gibi, sözlükler
sırasız veri tipleridir. Dolayısıyla <code class="docutils literal notranslate"><span class="pre">popitem()</span></code> metodunun öğeleri silerken
kullanabileceği bir sıra kavramı yoktur. Bu yüzden bu metot öğeleri rastgele
silmeyi tercih eder…</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sepet</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"meyveler"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"elma"</span><span class="p">,</span> <span class="s2">"armut"</span><span class="p">),</span> <span class="s2">"sebzeler"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"pırasa"</span><span class="p">,</span> <span class="s2">"fasulye"</span><span class="p">)}</span>
<span class="gp">>>> </span><span class="n">sepet</span><span class="o">.</span><span class="n">popitem</span><span class="p">()</span>
</pre></div>
</div>
<p>Bu komut sözlükten rastgele bir anahtarı, değerleriyle birlikte sözlükten
silecektir. Eğer sözlük boşsa bu metot bize bir hata mesajı gösterir.</p>
</div>
<div class="section" id="setdefault">
<h2>setdefault()<a class="headerlink" href="#setdefault" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>Bu metot epey enteresan, ama bir o kadar da yararlı bir araçtır… Bu metodun
ne işe yaradığını doğrudan bir örnek üzerinde görelim:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sepet</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"meyveler"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"elma"</span><span class="p">,</span> <span class="s2">"armut"</span><span class="p">),</span> <span class="s2">"sebzeler"</span><span class="p">:</span> <span class="p">(</span><span class="s2">"pırasa"</span><span class="p">,</span> <span class="s2">"fasulye"</span><span class="p">)}</span>
<span class="gp">>>> </span><span class="n">sepet</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"içecekler"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"su"</span><span class="p">,</span> <span class="s2">"kola"</span><span class="p">))</span>
</pre></div>
</div>
<p>Bu komut yardımıyla sözlüğümüz içinde “içecekler” adlı bir anahtar oluşturduk.
Bu anahtarın değeri ise <cite>(“su”, “kola”)</cite> oldu… Bir de şuna bakalım:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sepet</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="s2">"meyveler"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"erik"</span><span class="p">,</span> <span class="s2">"çilek"</span><span class="p">))</span>
<span class="go">('elma', 'armut')</span>
</pre></div>
</div>
<p>Gördüğünüz gibi, sözlükte zaten “meyveler” adlı bir anahtar bulunduğu için,
Python aynı adı taşıyan ama değerleri farklı olan yeni bir “meyveler” anahtarı
oluşturmadı. Demek ki bu metot yardımıyla bir sözlük içinde arama yapabiliyor,
eğer aradığımız anahtar sözlükte yoksa, <code class="docutils literal notranslate"><span class="pre">setdefault()</span></code> metodu içinde
belirttiğimiz özellikleri taşıyan yeni bir anahtar-değer çifti
oluşturabiliyoruz.</p>
</div>
<div class="section" id="update">
<h2>update()<a class="headerlink" href="#update" title="Bu başlık için kalıcı bağlantı">¶</a></h2>
<p>İnceleyeceğimiz son metot <code class="docutils literal notranslate"><span class="pre">update()</span></code> metodu… Bu metot yardımıyla
oluşturduğumuz sözlükleri yeni verilerle güncelleyeceğiz. Diyelim ki elimizde
şöyle bir sözlük var:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">stok</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"elma"</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> <span class="s2">"armut"</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span> <span class="s2">"peynir"</span><span class="p">:</span> <span class="mi">6</span><span class="p">,</span> <span class="s2">"sosis"</span><span class="p">:</span> <span class="mi">15</span><span class="p">}</span>
</pre></div>
</div>
<p>Stoğumuzda 5 adet elma, 10 adet armut, 6 kutu peynir, 15 adet de sosis var.
Diyelim ki daha sonraki zamanlarda bu stoğa mal giriş-çıkışı oldu ve stoğun son
hali şöyle:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">yeni_stok</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"elma"</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span> <span class="s2">"armut"</span><span class="p">:</span> <span class="mi">20</span><span class="p">,</span> <span class="s2">"peynir"</span><span class="p">:</span> <span class="mi">8</span><span class="p">,</span> <span class="s2">"sosis"</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span> <span class="s2">"sucuk"</span><span class="p">:</span> <span class="mi">6</span><span class="p">}</span>
</pre></div>
</div>
<p>Yapmamız gereken şey, stoğumuzu yeni bilgilere göre güncellemek olacaktır. İşte
bu işlemi <code class="docutils literal notranslate"><span class="pre">update()</span></code> metodu ile yapabiliriz:</p>
<div class="highlight-py3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">stok</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">yeni_stok</span><span class="p">)</span>
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">stok</span><span class="p">)</span>
<span class="go">{'peynir': 8, 'elma': 3, 'sucuk': 6, 'sosis': 4, 'armut': 20}</span>
</pre></div>
</div>
<p>Böylelikle malların son miktarlarına göre stok bilgilerimizi güncellemiş
olduk…</p>
</div>
</div>
<div class='glyph'><a href='https://yazbel.com'>♣</a></div>
<div class='extrarelbar'>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="kumeler_ve_dondurulmus_kumeler.html" title="Kümeler ve Dondurulmuş Kümeler"
>sonraki</a></li>
<li class="right" >
<a href="sozlukler.html" title="Sözlükler"
>önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">Sözlüklerin Metotları</a></li>
</ul>
</div> </div>
<div class='addcomment'>Yorumlar</div>
<div class='how-to-use'>
<h3>Önemli Not</h3>
Eğer yazdığınız yorum içinde kod kullanacaksanız, kodlarınızı
<span class='tag'><pre><code></span> etiketleri içine alın. Örneğin:
<pre>
<span class='tag'><pre><code class="python"></span>
<span class='keyword'>print</span>(<span class='string'>"Merhaba Dünya!"</span>)
<span class='tag'></code></pre></span>
</pre>
</div>
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES * * */
var disqus_shortname = 'istihza';
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4eca48eb2d83faf9" async="async"></script>
<div class="clearer"></div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Gezinti</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="kumeler_ve_dondurulmus_kumeler.html" title="Kümeler ve Dondurulmuş Kümeler"
>sonraki</a></li>
<li class="right" >
<a href="sozlukler.html" title="Sözlükler"
>önceki</a> |</li>
<li class="nav-item nav-item-0"><a href=".">⌂</a></li>
<li class="nav-item nav-item-this"><a href="">Sözlüklerin Metotları</a></li>
</ul>
</div>
<div class="footer">
© Copyright 2007-2020, Fırat Özgül | <a href="https://yazbel.com">yazbel.com</a>.
Son güncelleme: 08.08.2020.
<a href="http://sphinx-doc.org/">Sphinx</a> 3.2.0 kullanılarak oluşturuldu.
<br>
<br>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/"><img
alt="Creative Commons License" style="border-width:0"
src="https://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png" /></a><br />
<br>
</div>
<!-- Start of StatCounter Code for Default Guide -->
<script type="text/javascript">
var sc_project=10396326;
var sc_invisible=1;
var sc_security="fb5cd679";
var scJsHost = (("https:" == document.location.protocol) ?
"https://secure." : "http://www.");
document.write("<sc"+"ript type='text/javascript' src='" +
scJsHost+
"statcounter.com/counter/counter.js'></"+"script>");
</script>
<noscript><div class="statcounter"><a title="hit counter"
href="http://statcounter.com/" target="_blank"><img
class="statcounter"
src="http://c.statcounter.com/10396326/0/fb5cd679/1/"
alt="hit counter"></a></div></noscript>
<!-- End of StatCounter Code for Default Guide -->
</body>
</html>