字典是python中唯一的映射类型(哈希表),在perl中相似的数据结构称为哈希。哈希用{}表示,字典是由键值对组成的,但是键一定是唯一的。
字典的方法包括:keys()、values()、items()

  • 创建字典
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
#创建空字典
In [40]: dict = {}

In [41]: type(dict)
Out[41]: dict

#创建简单的字典
In [47]: a = {'a':1,'b':2,1:2}

In [48]: a
Out[48]: {1: 2, 'a': 1, 'b': 2}

#可用元祖做key 不可变
In [49]: a = {'a':1,'b':2,1:2,(1,2):'a'}

In [50]: a
Out[50]: {1: 2, 'a': 1, 'b': 2, (1, 2): 'a'}

#不可用列表做key 列表可变
In [51]: a = {'a':1,'b':2,1:2,(1,2):'a',[1,2,3]:'sf'}
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-51-f813a08c6933> in <module>()
----> 1 a = {'a':1,'b':2,1:2,(1,2):'a',[1,2,3]:'sf'}

TypeError: unhashable type: 'list'

#使用zip方法创建字典
In [112]: a = ['name','age']

In [113]: b = ['Lily','20']

In [114]: zip(a, b)
Out[114]: [('name', 'Lily'), ('age', '20')]

In [115]: dict(zip(a,b))
Out[115]: {'age': '20', 'name': 'Lily'}

#
In [116]: dict(a=10,b=20)
Out[116]: {'a': 10, 'b': 20}

#创建相同值的字典
In [117]: dict.fromkeys('abc',100)
Out[117]: {'a': 100, 'b': 100, 'c': 100}

In [118]: dict.fromkeys(range(1,11),'Tom')
Out[118]:
{1: 'Tom',
2: 'Tom',
3: 'Tom',
4: 'Tom',
5: 'Tom',
6: 'Tom',
7: 'Tom',
8: 'Tom',
9: 'Tom',
10: 'Tom'}
  • 字典的方法
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
#返回所有的key,以list的形式
In [53]: a
Out[53]: {1: 2, 'a': 1, 'b': 2, 'sf': [1, 2], (1, 2): 'a'}

In [54]: a.keys()
Out[54]: ['a', 1, 'b', (1, 2), 'sf']

#返回字典中健对应的值,若不存在返回none,若存在第二个参数,不存在则返回第二个参数值
In [56]: a.get('a')
Out[56]: 1

In [63]: a.get(4)

In [64]: print (a.get(4))
None

In [67]: print (a.get(4,'not exist'))
not exist

In [68]: a.get(4,'not exist')
Out[68]: 'not exist'

#判断key是否存在字典中
In [69]: a
Out[69]: {1: 2, 2: 3}

In [70]: 1 in a
Out[70]: True

In [71]: 4 in a
Out[71]: False

#使用has_key判断字典中是否含有key
In [72]: a.has_key('a')
Out[72]: False

In [73]: a.has_key(1)
Out[73]: True

#转化列表
In [75]: a.items()
Out[75]: [(1, 2), (2, 3)]

#拷贝生成新字典
In [76]: b = a.copy()

In [77]: b
Out[77]: {1: 2, 2: 3}

#清空字典
In [78]: a
Out[78]: {1: 2, 2: 3}

In [79]: a.clear()

In [80]: a
Out[80]: {}

#删除字典元素,若删除的key值不存在,则返回这个key值
In [83]: b.pop
b.pop b.popitem

In [83]: b.pop(5)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-83-d2f362f165e5> in <module>()
----> 1 b.pop(5)

KeyError: 5

In [84]: b.pop(1)
Out[84]: 2

In [85]: b
Out[85]: {2: 3}

#字典合并
In [94]: a
Out[94]: {'b': 5}

In [95]: b
Out[95]: {'a': 4}

In [96]: a.update(b)

In [97]: a
Out[97]: {'a': 4, 'b': 5}