摘要:本文主要介绍了字典数据类型
1、字典数据类型
1.1 从例子入手
首先为了更好的了解一下字典这种数据结构,直接举一个例子,使得我们对其有更加形象的认识:
1 >>> sam={'animal':'cat','color':'green','food':'chicken'} 2 >>> sam['animal'] 3 'cat'
上面的这种数据结构的定义方法就是字典:采用了键---值的形式。正如我们现实中运用的字典,查找一个词,后面会跟上这个词的一些含义。并且我们在查找某个词时可以直接用字典名【键】的方式进行索引。
1.2 和列表的比较
列表中的内容是有顺序的,也就是说顺序不同而元素相同的情况下,列表是不同的,而字典则没有顺序的概念,只要元素的个数和名称以及内容是一样的,那么就是同一个字典。
1.3 类方法的使用
当我们定义了一个字典以后,由于字典是没有顺序的,那么我们该如何遍历访问每一个字典的成员呢?
可以用类方法keys()、values()、items()来遍历访问键、值和键-值,具体如下:
1 >>> sam={'color':'red','num':42,'food':'chicken'} 2 >>> for v in sam.values(): 3 print(v) 4 5 red 6 42 7 chicken 8 >>> for i in sam.keys(): 9 print(i) 10 11 color 12 num 13 food 14 >>> for k in sam.items(): 15 print(k) 16 17 ('color', 'red') 18 ('num', 42) 19 ('food', 'chicken')
1.4 检查一个键或值是否在字典中
直接用in,返回布尔值
1 >>> 'apple' in sam.values() 2 False
1.5 get()方法
当我们要检查一个值是否在字典中时,可能会比较麻烦:首先判断该值是否在字典中,如果在才可以显示该值。如果不这样操作,而是直接寻找,那么程序就会崩溃,这就很不方便,于是发明了get()方法:
get()方法有两个参数,第一个是要取得其值的键,第二个是如果不存在时的备用返回值
1 >>> bam={'color':'red','num':42,'food':'chicken'} 2 >>> pos=bam.get('color','there is not') 3 >>> pos 4 'red' 5 >>> bos=bam.get('key','there is not') 6 >>> bos 7 'there is not'
1.6 setdefault()方法
有的时候我们确切地需要一个值,但是这样的一个值又不存在于字典中,那么我们就可以通过setdefault()方法将这样的一个值添加到字典中,添加到字典中以后,如果再次调用这个方法,由于键值已经存在了,新的键值便不会再次添加,也不会再进行更新。如下:
1 >>> bam={'color':'red','num':42,'food':'chicken'} 2 >>> bam.setdefault('name','mike') 3 'mike' 4 >>> bam 5 {'color': 'red', 'num': 42, 'food': 'chicken', 'name': 'mike'} 6 >>> bam.setdefault('name','jone') 7 'mike' 8 >>> bam 9 {'color': 'red', 'num': 42, 'food': 'chicken', 'name': 'mike'}
1.7 漂亮打印
import pprint message='It was a bright cold day in April,and the clocks were striking thirteen' count={} for character in message: count.setdefault(character,0) count[character]=+2 pprint.pprint(count)
输出结果:
1 {' ': 2, 2 ',': 2, 3 'A': 2, 4 'I': 2, 5 'a': 2, 6 'b': 2, 7 'c': 2, 8 'd': 2, 9 'e': 2, 10 'g': 2, 11 'h': 2, 12 'i': 2, 13 'k': 2, 14 'l': 2, 15 'n': 2, 16 'o': 2, 17 'p': 2, 18 'r': 2, 19 's': 2, 20 't': 2, 21 'w': 2, 22 'y': 2}
关于漂亮打印,主要是引入了pprint模块,这个模块中包含了两个重要的打印方式:pprint()和pformat(),下面的两种方式是等价的:
import pprint message='It was a bright cold day in April,and the clocks were striking thirteen' count={} for character in message: count.setdefault(character,0) count[character]=+2 pprint.pprint(count) print(pprint.pformat(count)) #和上一句是等价的 pprint.pformat(count) #pformat这种方法并不是显示到屏幕上,而是形成一个字符串保存起来,保存的格式和打印出的格式相同
下面的输出结果是:
1 {' ': 2, 2 ',': 2, 3 'A': 2, 4 'I': 2, 5 'a': 2, 6 'b': 2, 7 'c': 2, 8 'd': 2, 9 'e': 2, 10 'g': 2, 11 'h': 2, 12 'i': 2, 13 'k': 2, 14 'l': 2, 15 'n': 2, 16 'o': 2, 17 'p': 2, 18 'r': 2, 19 's': 2, 20 't': 2, 21 'w': 2, 22 'y': 2} 23 {' ': 2, 24 ',': 2, 25 'A': 2, 26 'I': 2, 27 'a': 2, 28 'b': 2, 29 'c': 2, 30 'd': 2, 31 'e': 2, 32 'g': 2, 33 'h': 2, 34 'i': 2, 35 'k': 2, 36 'l': 2, 37 'n': 2, 38 'o': 2, 39 'p': 2, 40 'r': 2, 41 's': 2, 42 't': 2, 43 'w': 2, 44 'y': 2}