Lesson 2-4(字典)

2.7 字典

&、字典是许多值的集合,索引可以使用许多不同的数据类型,不只是整数,可以是数、字符串或元组。

&、字典的索引被称为“键”,键及其关联的值称为“键-值”对,这种键-值对也称为项。

&、字典是python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。

&、字典中的项不排序,所以不能像列表那样切片;访问字典中不存在的键时,将会报错。

 

2.7.1 创建字典

--- 字典可使用花括号创建,每个键及值之间用冒号分隔,项之间用逗号分隔;空字典只用两个花括号表示,花括号内没有任何项。

--- 可是用函数dict从其它映射或键值对序列创建字典。

1 >>> dic_1 = {'name': 'LiMing', 'age': 20}
2 >>> items = [('name', 'Maly'), ('age', 18)]
3 >>> dic_2 = dict(items)

--- 可以使用关键字实参来调用dict函数。

1 >>> dict_3 = dict(name = 'Grubby', age = 25)
2 >>> dict_3
3 {'name': 'Grubby', 'age': 25}
4 >>>

 2.7.2 基础操作

--- 方法keys()、values()、items()分别返回对应的字典的键、值和键值对的值。

--- 返回的值类似于列表但不是列表,不能被修改,  分别是dict_keys、dict_values 和 dict_items类型,可用于for循环。

 1 >>> dic = {'a':1, 'b':2, 'c':3}
 2 >>> dic.keys()
 3 dict_keys(['a', 'b', 'c'])
 4 >>> dic.values()
 5 dict_values([1, 2, 3])
 6 >>> dic.items()
 7 dict_items([('a', 1), ('b', 2), ('c', 3)])
 8 >>> type(dic.keys())
 9 <class 'dict_keys'>
10 >>> type(dic.values())
11 <class 'dict_values'>
12 >>> type(dic.items())
13 <class 'dict_items'>
14 >>> 

--- len(dic)返回字典dic包含的项数。

--- dic[key]返回字典dic中键key对应的值。

--- dic[key]=value将字典dic中键key的值更新为value,如原字典dic中没有该键key,则增加该项到字典dic中。

--- del dic[key]将删除字典dic中键key的项(键值对)。

 1 1 >>> dic = {'a':1, 'b':2, 'c':3}
 2  2 >>> len(dic)
 3  3 3
 4  4 >>> dic['b']
 5  5 2
 6  6 >>> dic['c'] = 5
 7  7 >>> dic
 8  8 {'a': 1, 'b': 2, 'c': 5}
 9  9 >>> del dic['a']
10 10 >>> dic
11 11 {'b': 2, 'c': 5}
12 12 >>> 
13 13 >>> dic['f'] = 10
14 14 >>> dic
15 15 {'b': 2, 'c': 5, 'f': 10}
16 16 >>> 

--- 成员资格,使用in和not in操作符判定。

 1 >>> dic = {'a':1, 'b':2, 'c':3}
 2 >>> 'b' in dic.keys()
 3 True
 4 >>> 'f' in dic.keys()
 5 False
 6 >>> 'b' in dic.values()
 7 False
 8 >>> '3' in dic.values()
 9 False
10 >>> 3 in dic.values()
11 True
12 >>> 

2.7.3 常用方法

--- get()方法:如果试图访问字典中没有的项,将引发错误,使用方法get,则很好的解决该问题。方法get有两个参数,第一个是要取得其值的键,必选;第二个是字典中没有要访问的项时返回的值,可选,不选时默认返回None。

 1 >>> dic = {'a':1, 'b':2, 'c':3}
 2 >>> print(dic['f'])
 3 Traceback (most recent call last):
 4   File "<stdin>", line 1, in <module>
 5 KeyError: 'f'
 6 >>> print(dic.get('f'))
 7 None
 8 >>> print(dic.get('b'))
 9 2
10 >>> print(dic.get('f', 'N/A'))
11 N/A
12 >>> 

--- setdefault()方法:该方法设置字典中要检测的键的默认值。两个参数,第一个参数是要设置的键;第二个参数是,如果字典中没有该项,则该参数赋给该项并返回该值,如果字典中有该项则返回该项中的值。

 1 >>> dic = {'a':1, 'b':2, 'c':3}
 2 >>> print(dic)
 3 {'a': 1, 'b': 2, 'c': 3}
 4 >>> print(dic.setdefault('b', 100))
 5 2
 6 >>> print(dic)
 7 {'a': 1, 'b': 2, 'c': 3}
 8 >>> print(dic.setdefault('f', 200))
 9 200
10 >>> print(dic)
11 {'a': 1, 'b': 2, 'c': 3, 'f': 200}
12 >>> 

--- keys()方法和values()方法:分别返回一个字典视图,分别包含字典中的所有键和字典中的所有值。

1 >>> dic = {'a':1, 'b':2, 'c':3}
2 >>> print(dic.keys())
3 dict_keys(['a', 'b', 'c'])
4 >>> print(dic.values())
5 dict_values([1, 2, 3])
6 >>> 

--- items()方法:返回一个包含所有字典项的字典视图,其中每个元素都为(key,values)的形式。

1 >>> dic = {'a':1, 'b':2, 'c':3}
2 >>> print(dic.items())
3 dict_items([('a', 1), ('b', 2), ('c', 3)])
4 >>> print(len(dic.items()))
5 3
6 >>> print(list(dic.items()))
7 [('a', 1), ('b', 2), ('c', 3)]
8 >>> 

--- pop()方法:获取与指定键相关联的值,并将该项从字典中删除。

1 >>> dic = {'a':1, 'b':2, 'c':3}
2 >>> print(dic.pop('c'))
3 3
4 >>> print(dic)
5 {'a': 1, 'b': 2}
6 >>> 

---popitem()方法:类似list.pop(),list.pop()弹出列表中的最后一个元素,popitem()随机弹出一个字典项。

1 >>> dic = {'a':1, 'b':2, 'c':3}
2 >>> print(dic.popitem())
3 ('c', 3)
4 >>> print(dic)
5 {'a': 1, 'b': 2}
6 >>> 

--- formkeys()方法:创建一个新字典,包含指定的键,且每个键对应的值默认是None,也可指定一个值。

1 >>> print(dic.fromkeys(['a','b']))
2 {'a': None, 'b': None}
3 >>> print(dic.fromkeys(['a','b'], 'N/A'))
4 {'a': 'N/A', 'b': 'N/A'}
5 >>> 

--- copy()方法:执行浅复制,返回一个新字典,包含的项与原来的字典相同。

 1 >>> dic_1 = {'a':1, 'b':2, 'c':3}
 2 >>> dic_2 = dic_1.copy()
 3 >>> print(dic_1)
 4 {'a': 1, 'b': 2, 'c': 3}
 5 >>> print(dic_2)
 6 {'a': 1, 'b': 2, 'c': 3}
 7 >>> dic_1['c'] = 99
 8 >>> print(dic_1)
 9 {'a': 1, 'b': 2, 'c': 99}
10 >>> print(dic_2)
11 {'a': 1, 'b': 2, 'c': 3}
12 >>> del dic_1['a']
13 >>> print(dic_1)
14 {'b': 2, 'c': 99}
15 >>> print(dic_2)
16 {'a': 1, 'b': 2, 'c': 3}
17 >>> 

--- clear()方法:删除所有的字典项,并返回None。

1 >>> dic = {'a':1, 'b':2, 'c':3}
2 >>> print(dic)
3 {'a': 1, 'b': 2, 'c': 3}
4 >>> print(dic.clear())
5 None
6 >>> print(dic)
7 {}
8 >>> 

 

posted @ 2019-04-15 11:11  竹与刀  阅读(126)  评论(0编辑  收藏  举报