1.字典dict
1.1字典定义
>>> d={'Adam':95,'Lisa':85,'Bart':59}
1.2字典访问
1.2.1key方法访问
dict[key]
>>> d['Adam']
95
判断key是否在dict中--in(只能判断key)
>>> d
{'Lisa': 85, 'Adam': 95, 'Bart': 59}
>>> 'Paul' in d
False
>>> 'Lisa' in d
True
>>> 85 in d
False
1.2.2get方法访问
dict.get(key)
dict本身提供的一个 get 方法,在Key不存在的时候,返回None
>>> d['Paul']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Paul'
>>> d.get('Adam')
95
>>> d.get('Paul')
1.3字典特点
查找速度快,占用内存高
key值不可重复
key-value对没有顺序
作为key的对象类型必须为不可变的类型
不可变的类型:字符串、浮点数、整数等
可变的类型:list等
1.4字典更新
dict[key]=value
注:如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value
1.5字典遍历
1.5.1迭代dict的keys
for-in语句直接作用于dict时,拿到的是dict的key
>>> for key in d:
... print "%s : %s" % (key,d[key])
...
Lisa : 85
Adam : 95
Bart : 59
1.5.2迭代dict的values
方法
dict.values()把dict的所有values取出来,转换为一个List
dict.itervalues()只是把dict的所有values取出来,并不转换为list,所以比dict.values()方法占用更少的内存
举例
>>> d.values()
[85, 95, 59]
>>> d.itervalues()
<dictionary-valueiterator object at 0x0000000002487F98>
>>> for i in d.itervalues():
... print i
...
85
95
59
1.5.3迭代dict的keys和values
方法
dict.items() 把dict对象转换成了包含tuple的list
dict.iteritems() 不把dict转换成list,而是在迭代过程中不断给出 tuple, 所以, iteritems() 不占用额外的内存。
举例
>>> d.items()
[('Lisa', 85), ('Adam', 95), ('Bart', 59)]
>>> d.iteritems()
<dictionary-itemiterator object at 0x0000000002487F98>
>>> for key,value in d.iteritems():
... print key,value
...
Lisa 85
Adam 95
Bart 59
1.6有序字典
from collections import OrderedDict favorite_languages = OrderedDict() favorite_languages['jen'] = 'python' favorite_languages['sarah'] = 'c' favorite_languages['edward'] = 'ruby' favorite_languages['phil'] = 'python' for name, language in favorite_languages.items(): print(name.title() + "'s favorite language is " + language.title() + ".")
2.集合set
2.1特点
set的元素没有重复
set存储的元素和dict的key类似,必须是不变对象
set的元素是无序的
2.2创建
调用 set() 并传入一个 list,list的元素将作为set的元素
>>> s=set(['A','B','C'])
2.3访问
由于set存储的是无序集合,所以我们没法通过索引来访问。
访问 set中的某个元素实际上就是判断一个元素是否在set中。
>>> 'Bart' in s
False
2.4遍历
for-in遍历
2.5更新
由于set存储的是一组不重复的无序元素,因此,更新set主要做两件事:
一是把新的元素添加到set中,二是把已有元素从set中删除。
添加:s.add(object)
删除:s.remove(object) # 注:删除如果元素不存在,则会报错。