[python]学习笔记——字典
当我们把一系列值分组到一个结构中,并且通过其序号进行引用,这就是python中我们所说的列表
而当我们通过名字来对值进行引用,这种数据类型我们称之为映射,字典是python中唯一内建的映射类型
字典是无序的
假设现在有一组人名和编号,对其建立一个小型数据库来方便查找,使用列表的时候
1 names = ['Zhang','Wang','Li','Zhao','Liu'] 2 numbers = [‘0010’,‘0020’,‘0030’,‘0040’,‘0050’] 3 #检索名字为Li的标号 4 >>>numbers[names.index('Li')] 5 0030
使用字典则可以通过以下方式创建{键:值}:
data = {‘Zhang’:'0010','Wang':'0020','Li':'0030','Zhao':'0040','Liu':'0050'} #字典
使用 dict函数(实际上dict不是真正意义上的函数,它是一个类型,和str,list,tuple一样)
1 >>>item = [('name','Gumby'),('age',''42)] 2 >>>d = dict(item) 3 >>>d 4 {'age':42 , 'name':'Gumby'} 5 >>>d['name'] 6 'Gumby' 7 #或者通过dict()函数来创建字典 8 >>>d = dict(age = 42 , name = 'Gumby') 9 >>>d 10 {'age':42 , 'name':'Gumby'}
基本字典操作
len(d)——返回字典d中项的数量({键:值}为一项)
d[k]——返回字典d中键为k所对应的值
d[k]=v——将v关联到字典d中的键k
del d[k]——删除字典d中键为k的项
k in d——检查字典d中是否含有键为k的项
注:(1)字典的键可以为任意不可变类型
(2)如下
>>> x = [] >>> x[42] = 42 Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list assignment index out of range >>> x = {} >>> x[42] = 42 >>> x {42: 42}
字典的方法
1、clear(): 清除字典的所有项
2、copy(): 返回一个具有相同键-值对的新字典
3、fromkey(): 使用给定的键创建新字典,每个键对应默认的值为None
4、get(): 一种更宽松的访问字典的方法,当所访问的键不存在时返回None 可以自定义None值get('key','N/A')
5、has_key(): 检查字典中是否存在所给出的键,返回值为True或者False(python3.0中不再有此方法)
6、items()和iteritems(): 前者把字典所有项以列表方式返回,后者作用大致相同,区别在于后者以迭代器对象返回
7、keys()和iterkeys(): keys()将字典中键以列表方式返回,iterkeys()则返回针对键的迭代器
8、pop(): 获取字典中所给定的键的值,然后将这对键-值从字典中移除
9、popitem(): 方法类似于list.pop(),因为字典是无序的,所以会随机弹出一项,并移除
10、setdefault(): 某种程度上类似于get(),能够获取给定键相关联的值,除此之外还能给字典设立不存在的键-值对
11、update(): 利用一个字典给另外一个字典更新
12、values()和itervalues(): values()一列表的形式返回字典中的值(itervalues()返回值的迭代器),与返回键的列表不同的是返回值的列表可以包含重复元素