零基础十分钟学Python-容器

在上篇文章中我们讲解了python容器-列表,那么这里我们继续上篇的内容,当然如果你想看上篇的内容可以我的主页观看
3、元组
与列表类似,元组也是由任意类型元素组成的序列。于列表不同的是,元组是不可改变的,这意味着一但元组被定义,将无法再进行增加、删除或修改元素等。因此,元组就像是一个变量列表。
3.1、使用()创建元组
可以用()创建一个空元组
创建一个或多个的元时,每一个元素后面都需要跟着一个逗号,即使只包含一个元素也不能省略:
如果创建的元组所包含的元素数量超过1,最后一个元素后面的逗号都可以省略:
可以一次将元组赋值给多个变量:
可以利用元组在一条语句中对多个变量的值进行交换,而不需要借助零时变量:
tuple()函数可以用其他类型的数据类创建元组:
4、字典
字典(dictionary)与列表类似,但其中元素的顺序无关紧要,因为他们不是通过像0或1的偏移量访问的,取而代之,每个元素拥有与之对应的互不相同的键(key),需要通过键来访问元素。键通常是字符串,但它还可以是python中其它任意的不可变类型:布尔型、浮点型、元组、字符串,以及其它一些类型。字典是可变的,因此你可以增加、删除或修改其中的键值对。
提示:在其他语言中,字典可能会被称作关系型数组、哈希表或哈希图。在python中,字典还经常被简写成dict。
4.1、使用{}创建字典
用大括号({})将一系列以逗号隔开的键值对(key:value)包裹起来即可进行字典当的创建。最简单的字典是空字典,它不包含任何键值对:
创建一个字典:
提示:python允许在列表、元组或字典的最后一个元素后面添加逗号,这不会产生任何问题。
4.2、使用dict()转换为字典
可以使用dict()将包含双值子序列的序列转换成字典,每个子序列的第一个元素作为键,第二个元素作为值:
可以对任何包含双值子序列的序列使用dict(),下面是其他的例子:
包含双值元组的列表:
包含双值列表的元组:
双字符的字符串组成的列表:
双字符的字符串组成的元组:
4.3、使用[key]添加或修改元素
向字典中添加元素只需要指定该元素的键并赋予相应的值即可。如果该元素的键已经存在于字典中,那么该键对应的旧值会被新值取代,如果改元素的键并未在字典中出现,则会被加入字典。
建立一个包含大多数monty python成员的名字字典,用他们的姓当作键,名当作值:
人员添加完成后貌似落下了一个人,生于美国的terry gilliam。下面是一个糟糕的程序员为了将gilliam添加进字典而编写的代码,他粗心的将gilliam的名字打错了:
下面是另一位颇具python风格的程序员修改的代码:
使用通过相同的键(‘gilliam’)将原本对应的值’gerry’修改为为’terry’
4.4、使用update()合并字典
使用update()可以将一个字典的键值对合并到另一个字典中去。 首先创建一个包含所有成员的字典pythons:
接着创建一个包含其他喜剧演员的字典,名为others:
现在,出现了另一位糟糕的程序员,它认为others应该被归入monty python成员中:
如果待添加的字典与待扩充的字典包含同样的键,新归入字典的值会取代原有的值:
4.5、使用del删除具有制定键的元素
创建一个字典:
删除linux:
4.6、使用clear()删除所有元素
使用clear(),或者给字典变量重新赋值一空字典({})可以将字典中所有元素删除:
4.7、使用in判断是否存
如果你希望判断某一个键是否存在于一个字典中,可以使用in。
4.8、使用[key]获取元素
这是对字典最常进行的操作,只需要制定字典名和键即可获得对应的值:
如果字典中不包含一个制定的键,会产生一个异常:
有两种方法可以避免这种情况发生,第一种是在访问前通过in测试是否存在:
另一种方法是使用字典函数get():
反之,若键不存在,如果你指定了可选值,那么get()函数将返回这可选值:
否则,会得到none(在交互解释器中什么也不会显示):
4.9、使用keys()获取所有键
使用kets()可以获得字典中所有的键。
在python2里,keys()会返回一个列表,而在python3里则会返回dict_keys(),它是键的迭代形式。这种返回形式对于大型的字典非常有用,应为他不需要时间和空间来创建返回的列表,有时你需要的可能就是一个完整的列表,而在python3中,你只能自己调用list()将dict_keys()转换为列表类型。
在python3里,你同样需要手动使用list()将values()和items()的返回值转换为普通的python列表。
4.10、使用values()获取所有值
使用values()可以获取字典中的所有值:
4.11、使用items()获取所有键值对
使用items()函数可以获取字典中所有的键值对:
每一个键值都会以元组的形式返回。
4.12、使用=赋值,使用copy()赋值
与列表一样,对字典内容进行修改会反映到所有与之相关联的变量名上:
若想避免这种情况,可以使用copy()将字典赋值到一个新的字典中: