6、字典(Dict)
字典同样是一种容纳多个元素的容器,在很多方面和列表类似,但是,不同的一点是,字典不是以位置来索引的。
字典包含多个元素,每个元素以,
分隔开,每个元素包含两部分:键(Key)
和值(Value)
,键(Key)
和值(Value)
之间用冒号:
分隔开,所有元素用大括号{}
扩起来。
字典元素的索引正是依靠元素的键(Key)
实现的。
字典元素的键(Key)
必须是唯一的,值则不需要唯一。
值可以取任何数据类型,但键必须是不可变的,如字符串、数字或元组。
dic01 = {key1 : value1, key2 : value2 }
6.1、创建字典
# example:
dict01 = {'Kevin': 100, 'Loki': 98, 'Jose': 92, 'Vicky': 95}
dict02 = {89: 'Test'}
print('dict01 = {}'.format(dict01))
print('dict02 = {}'.format(dict02))
# 运行结果:
dict01 = {'Kevin': 100, 'Loki': 98, 'Jose': 92, 'Vicky': 95}
dict02 = {89: 'Test'}
6.2、读取字典
字典的读取是通过键来实现的。
# example:
dict01 = {'Kevin': 100, 'Loki': 98, 'Jose': 92, 'Vicky': 95}
dict02 = {89: 'Test'}
print("dict01['Jose'] = {}".format(dict01['Jose']))
print("dict02[89] = {}".format(dict02[89]))
# 运行结果:
dict01['Jose'] = 92
dict02[89] = Test
6.3、更新字典
字典是一种可变的数据类型,字典的修改包括对字典已有的值的重新复制以及增加一组键和值。
# example:
dict01 = {'Kevin': 100, 'Loki': 98, 'Jose': 92, 'Vicky': 95}
dict02 = {89: 'Test'}
dict01['Jose'] = 100
dict02[89] = 'Temp'
print('dict01 = {}'.format(dict01))
print('dict02 = {}'.format(dict02))
# 运行结果:
dict01 = {'Kevin': 100, 'Loki': 98, 'Jose': 100, 'Vicky': 95}
dict02 = {89: 'Temp'}
6.4、字典的删除
字典的删除包括对已有值的删除del
和对整个字典的清空clear
。
# example:
dict01 = {'Kevin': 100, 'Loki': 98, 'Jose': 92, 'Vicky': 95}
dict02 = {89: 'Test'}
del dict01['Vicky']
dict02.clear()
print('dict01 = {}'.format(dict01))
print('dict02 = {}'.format(dict02))
# 运行结果:
dict01 = {'Kevin': 100, 'Loki': 98, 'Jose': 92}
dict02 = {}
需要注意的是,对整个字典执行del
命令之后,系统将整个字典从内存中删除,删除后再执行print
命令,系统会报错,提示未定义。
clear
命令只是清空了这个字典中的所有键及值,但是字典本身还存在于系统内。
6.5、字典的函数
a、len():
def len(*args, **kwargs): # real signature unknown
""" Return the number of items in a container. """
pass
def len(*args, **kwargs): # real signature unknown
""" 返回字典中元素的个数。 """
pass
# example:
dict01 = {'Kevin': 100, 'Loki': 98, 'Jose': 92, 'Vicky': 95}
print('len(dict01) = {}'.format(len(dict01)))
# 运行结果:
len(dict01) = 4
b、str():
def __init__(self, value='', encoding=None, errors='strict'): # known special case of str.__init__
"""
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler.
Otherwise, returns the result of object.__str__() (if defined) or repr(object).
encoding defaults to sys.getdefaultencoding().
errors defaults to 'strict'.
# (copied from class doc)
"""
pass
def __init__(self, value='', encoding=None, errors='strict'): # known special case of str.__init__
"""
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
从给定对象创建一个新的字符串对象。如果指定了编码或错误,则对象必须公开一个数据缓冲区,该缓冲区将使用给定的编码和错误处理程序进行解码。
否则,返回object._ str__()(如果定义了)或repr(对象)的结果。
编码默认为sys.getdefaultencoding()。
错误默认为“strict”。
# (copied from class doc)
"""
pass
# example:
dict01 = {'Kevin': 100, 'Loki': 98, 'Jose': 92, 'Vicky': 95}
str01 = str(dict01)
print('str01 = {}'.format(str01))
# 运行结果:
str01 = {'Kevin': 100, 'Loki': 98, 'Jose': 92, 'Vicky': 95}
c、type():
def __init__(cls, what, bases=None, dict=None): # known special case of type.__init__
"""
type(object_or_name, bases, dict)
type(object) -> the object's type
type(name, bases, dict) -> a new type
# (copied from class doc)
"""
pass
# example:
dict01 = {'Kevin': 100, 'Loki': 98, 'Jose': 92, 'Vicky': 95}
print('type(dict01):{}'.format(type(dict01)))
# 运行结果:
type(dict01):<class 'dict'>
网友评论