Python教程(四)
Python基础教程(四):字典:当索引不好用时
字典,通过名字来引用值的数据结构,这种类型的数据结构称为映射(mapping),其为Python中唯一内奸的映射类型。字典中的值没有特殊的顺序,都存储在特定的键(Key)。键可以是数字、字符串或元组
字典由多个键机器对应的值构成的键-值对组成(键-值对称为项),每个键与其值之间用冒号隔开,项之间用逗号隔开,整个字典由一对大括号括起来。空字典由两个大括号组成
-
dict函数:通过其他映射或者键-值对的序列建立字典
items=[('name', 'Gumby'), ('age', 42)] d=dict(items) #返回{'age': 42, 'name': 'Gumby'} d=dict('name'='Gumby', age=42)
-
基本字典操作与序列类似,都有一些重要区别:
- 键类型:键可以是任意的不可变类型,不一定为整型数据
- 自动添加:机器键起初在字典中并不存在,也可以为其赋值,字典就会建立新的项
- 成员资格:
k in d(字典)
查找的是键,而v in l(列表)
查找值
字典方法
-
clear: 清除字典中所有的项。存在关联到新的字典,要清空原始字典中所有的元素,必须使用clear方法
-
copy: 返回一个具有键-值对的新字典(实现的为浅复制)。在副本中替换值的时候,原始字典不受影响,但是修改了某个值,而不是替换,则原始字典也改变
避免这问题的一种和方法就是深复制,复制其包含的所有值,则修改(添加或删除)副本中的值,原始字典不受影响
-
fromkeys: 使用给定的键建立新的字典。每个键都对应一个默认的值None, 也可直接在dict上调用该方法
{}.fromkeys(['name', 'age']) #返回{'age': None, 'name': None} dict.fromkeys(['name', 'age']) dict.fromekeys(['name', 'age'], '(unknown)') #自己提供默认值
-
get: 宽松的访问字典项的方法。如果键存在,返回其值;如果键不存在,则返回None
- d.get('name') #不存在则返回None - d.get('name', 'N/A') #不存在则返回'N/A'
-
has_key: 检查字典中是否含有特点的键,
d.has_key(k)
相当于k in d
,返回True或False -
item和iteritems: item将字典所有的项以列表方式返回,列表中的每一项都表示为键-值对的形式,项在返回时没有遵循特定的次序
d.items() #返回[('url': 'www.python.org'), 'statues': 'OK'] it=d.iteritems() list(it)
-
keys和iterkeys: 将字典中的键以列表的列表形式返回,而iterkeys则返回针对键的迭代器
-
pop: 用来获得对应于给定的键,然后将这个键-值对从字典中移除
d.pop('x')
-
popitem: 类似于list.pop,popitem弹出随机的项
-
setdefault: 类似于get方法,能够获得与给定键相关联的值,另外,setdefault还能在字典中不含有给定键的情况下设定相应的键值
d.setdefault('name', 'N/A') #返回'N/A' d['name']='Gumby' d.setdefault('name', 'N/A') #返回'Gumby'
-
update: 利用一个字典项更新另外一个字典
d.update(X)
-
values和itervalues: values方法以列表的形式返回字典中的值,itervalues返回值的迭代器。与返回键的列表不同的是,返回值的列表中可以包含重复的元素
本章新函数
- dict(seq) 用(键,值)对或映射关系建立字典