一、元组
元组(tuple)跟列表很像,使用()包裹元素,是一种不可变的类型。
元组内部可以放置各种数据,不能进行增、减、改操作,只可以查看和删除。这里就要说到不可变的类型,一共有三种:数字、字符串、元组。其中数字和字符串都是标量类型,而元组是一个容器,它其中可以放入很多类型的元素。但是元组可以扩充,使用+
aTuple = ("one", "two", "three")
aTuple = aTuple + ("four",)
print aTuple
如果你当前操作的数据是动态的,在未来会频繁的进行修改操作,包括增、减、删、改等基本操作的时候,应该选择列表。
如果你在维护一些敏感数据,并且需要把这些数据传递给一个你并不了解的函数;或者有时候你只是在维护软件开发的一部分,你并不知道这些敏感的数据将来会被他人如何使用,那么将数据设置成不可变的,会使得这些内容安全很多。
同时,列表和元组之间也是可以互相转化的:
list() 函数用来生成一个空的列表,或者将其他数据转化为列表,包括元组。
tuple() 函数用来生成一个空的元组,或者将其他数据转化为元组,包括列表。
二、字典
字典,英文中经常以 dict 来标记(dictionary 的缩写),有时候也被称作 map。它和列表、元组一样,都是用来存放元素的容器。当然,它也有不同之处。字典不使用默认的自然数来索引值,而是用其他变量来显式的标记。我们可以把它理解成一种一对一的映射关系。在 Python 的字典结构中,每一个映射由一个键(key)和指向它的值(value)来确定的。
同时字典也是一个容器,里面可以存放任意数目、任意类型的数据。字典是使用花括号来包裹元素的,元素与元素之间用逗号","分割,每个元素由“键—值”配对构成,键与值之间使用冒号":"来连接。
players = {
"Lionel Messi":"Barcelona",
"Cristiano Ronaldo":"Real Madrid",
"Kak":"AC Milan",
"Beckham":"Manchester United",
"Mickael Jordan":"Chicago Bulls",
"Kobe Bryant":"Los Angeles Lakers"
}
字典作为 Python 中唯一的哈希类型,有着广泛的应用。哈希表是一种数据结构,哈希表中的每一条数据(如 1xx 1234 5678),是根据它的键(sin)来进行存储的。哈希表的操作是这样的:根据你的键,执行一个叫做哈希函数的操作,计算出一个结果,这个结果就是值所存储的地址。也就是说一个值所存放的地址,取决于它的键。这种计算产生的结果有一定的随意性,所以哈希表的存储结构也是很“随意”的,不是连续的。而采用键来查找值,是非常非常快的。
字典的基本操作
可以根据键找到值,但是通过值找键就需要进行循环判断了。
players = {
"Lionel Messi":"Barcelona",
"Cristiano Ronaldo":"Real Madrid",
"Kak":"AC Milan",
"Beckham":"Manchester United",
"Mickael Jordan":"Chicago Bulls",
"Kobe Bryant":"Los Angeles Lakers"
}
aDict = dict()
aDict = {"name":"me","location":"earth"}
names = players.keys()
teams = players.values()
print names
print teams
print players["Lionel Messi"]
def searchPlayer(team):
for name in players:
if players[name] == team:
print name
searchPlayer("Real Madrid")
修改
aDict = {"name":"me", "location":"earth" }
aDict["name"] = "chong"
print aDict["name"]
print aDict
del aDict["name"] #删除某一个元素
aDict.clear() #删除字典内容,剩下一个空字典
del aDict #删除字典
●dict()
这个函数用来创建一个字典,如果括号中没有参数,则生成一个空的字典。但是如果括号里有了参数,这会是一个非常有意思的情形。dict 函数会接受一个序列,序列中的参数必须是两个部分,第一部分就是将来字典元素中的键,第二部分就是将来字典元素中的值。比如:
dict1 = dict([(1, 2), ("x", "y")])
print dict
实际上括号中的内容是可以迭代的序列就好,上例中的序列是元组,我们可以换成列表,效果是一样的。
●len()
len 函数会返回字典中“键-值”对的数目。
●keys()
key 函数会提取所有的键到一个列表中去。
●values()
values 函数会提取所有的值到一个列表中去。
●update()
update 函数用来将一个字典中的内容添加到另一个字典中,如果字典中有键与新加入的字典中的键冲突,那么新的键的值将会覆盖(替代)掉老的值。
●setdefault()
setdefault 函数是经常会用到的函数,它带有两个参数,代表一个“键-值”对。函数会首先完成一次搜索,如果键存在,则返回原来的值,新的值不会被更新;如果键不存在,那么就会插入一个新的“键-值”对。