列表是相关对象的一个集合,与列表不同,字典用来保存一个键/值对集合,其中每个唯一的键有一个与之关联的值。
![](https://img.haomeiwen.com/i11653259/0dcd2bc02cc6b49e.png)
![](https://img.haomeiwen.com/i11653259/b0609bd8dce13f0a.png)
使用前一定要进行初始化!
我们可以通过“笨方法”实现对字典里的元素进行初始化:
![](https://img.haomeiwen.com/i11653259/03bd0a1b3fe5e042.png)
但是假设不是5个频数,而是要你追踪成千上万个,突然间,我们会有大量初始化代码,为了解决这个问题,我们使用了in,not in等方法:
![](https://img.haomeiwen.com/i11653259/0b8c6938e6ff2e22.png)
![](https://img.haomeiwen.com/i11653259/8edc9655dbae8de5.png)
如果试图访问一个字典中不存在的键,会导致一个KeyError,出现KeyError时,程序会由于运行时错误崩溃。访问一个键前,可以通过确保字典中每个键都有一个关联值来避免KeyError,尽管我们用了in和not in操作符来提供帮助,不过更成熟的技术还是setdefault方法。
![](https://img.haomeiwen.com/i11653259/6bd9e1f9302e75c4.png)
![](https://img.haomeiwen.com/i11653259/01ba8b95f3f9b2a9.png)
默认地,所有字典都是无序的,因为它不会维持插入的顺序。如果需要在输出中对字典排序,要使用sorted内置函数:
![](https://img.haomeiwen.com/i11653259/ecddbd7445076544.png)
上例中,用了sorted函数,就可以使for循环按a、e、i、o、u(vowels列表顺序)的顺序生成输出,而不是按随机的顺序输出(由于字典的无序性)。使用的格式类似于上例,把found字典传递到sorted函数。
我们注意到found字典传递到sorted函数时,found后面还跟随了“items()”,。与列表类似,字典提供了大量内置方法,其中之一就是items方法,它会返回一个键/值对列表,在for循环中使用items通常是迭代处理字典的首选技术,因为这样可以利用循环变量访问键和值(这里的for循环中设置了变量k和v,分别是键和值,对应的print输出中的k和v)。
by PengSW on 2019/1/22
网友评论