首页 > 编程 > Python > 正文

Python基本数据结构之元组、集合与字典

2019-11-08 01:41:57
字体:
来源:转载
供稿:网友

元组(Tuple)

有序的集合通过偏移来取数据属于不可变的对象,不能在原地修改内容,没有排序,修改等操作。 在处理一组对象时,这个组默认是元组类型

注:

tuple类型转换,想修改先用list方法将元组转换成列表,再将修改后的列表用tuple方法生成新元组 那为什么有列表还要有元组呢 (元组不可变的好处)保证数据的安全,比如我们传给一个不熟悉的方法或者数据接口,确保方法或者接口不会改变我们的数据从而导致程序问题。

集合(Set)

集合是没有顺序的概念。所以不能用切片和索引操作。

创建集合。set():默认是可变的 frozenset():不可变的添加操作:add,update删除 remove成员关系 in,not in交集,并集,差集 & | -set去重:利用集合的单一性清除列表内容重复的元素。

可变集合

info = set('abc') info.add('python')##添加单个对象到集合里 PRint info info.update('python')##把对象里的每个元素添加到集合里 print info info.remove('python') print info

不可变集合

t = frozenset('haha') ##不能进行添加,修改和删除的操作。

成员操作 in,not in

print 'a' in info print 'h' in t print 'jay' not in info

判断2个集合是否相等,之和元素本身有关,和顺序无关。

print set('abc') == set('cba')

并集,交集,差集

print set('abc') | set('cbdef') ##并集 print set('abc') & set('cbdef') ##交集 print set('abc') - set('cbdef') ##差集 liststr = ['haha','gag','hehe','haha']

for循环在set中的小应用:

m = [] for i in liststr: if i not in m: m.append(i) print m m = set(liststr) print list(m)

字典dict

字典的特点

字典是无序的,它不能通过偏移来存取,只能通过键来存取。 字典 = {‘key’:value} key类似我们现实的钥匙,而value则是锁。一个钥匙开一个锁,内部没有顺序,通过键来读取内容,可嵌套,方便我们组织多种数据结构,并且可以原地修改里面的内容,属于可变类型。 组成字典的键必须是不可变的数据类型,比如,数字,字符串,元组等,列表等可变对象不能作为键.即键key必须是可哈希(hashable)的。 不允许一个键对应多个值。

创建字典。{}和dict()

定义方法:info = {'name':'lilei', 'age': 20}

dict内置方法:info = dict(name='lilei',age=20)

添加内容 a[‘xx’] = ‘xx’

info['phone'] = 'iphone5'

修改内容 update() ,

update()的参数是一个字典的类型,他会覆盖相同键的值。

info['phone'] = 'htc' info.update({'city':'beijing','phone':'nokia'})

删除 del,clear(),pop()

del info['phone'] #删除某个元素info.clear() #删除字典的全部元素info.pop('name') #注意和列表pop方法的区别

in 和 has_key() 成员关系操作

返回布尔值,比如:

phone in infoinfo.has_key('phone')

字典的几个重要方法

keys(): 返回的是列表,里面包含了字典的所有键。values():返回的是列表,里面包含了字典的所有值。items():生成一个字典的容器:[()]

get():从字典中获得一个数据

info.get('name') info.get('age2',’22’) #第二个参数可选,设置时表示没有该键时返回的默认值。

hash():本身并不是为字典设计的方法,可以判断某个对象是否可以做一个字典的键。将一个对象作为参数传递给hash()返回这个对象的哈希值。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表