python之字典和结构化数据

摘要:本文主要介绍了字典数据类型

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}
原文地址:https://www.cnblogs.com/lzy820260594/p/11535260.html