摘要:本文主要介绍了字典数据类型
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}