Python学习记录(四)--字典
1、 字典 (内部项没有顺序) P78
字典的键可以是数字、字符串、元组
2、 创建字典和使用
(1)创建字典
>>> dict = {'yilia':"123", "mac": "234", "joice":"eeee"}
>>> dict
{'yilia': '123', 'mac': '234', 'joice': 'eeee'}
dict函数创建: 通过映射其它字典或者(键,值)这项的序列建立字典
>>> item = [('name', 'yilia'), ('phone', "123")]
>>> d = dict(item)
>>> d
{'phone': '123', 'name': 'yilia'}
>>> d['name'] # 调用
'yilia'
>>> d = dict(name = 'yilia', age = 16)
>>> d
{'age': 16, 'name': 'yilia'}
(2) 基本操作
len(d) : 返回d中键值对的个数;
d[key] : 返回关联到键key上的值;
d[key]=v : 将值v关联到键key上;
del d[key]: 删除键为key的项;
key in d : 检查字典d中是否含有键为key的项
(3) 字典格式化字符串 %(key)s
>>> "my phonebook is %(name)s." % d
'my phonebook is yilia.'
3、 字典方法
(1) clear:清除字典中所有的项
(2) copy: 返回具有相同键值对的新字典,浅复制 (副本中替换值时,原始字典不受影响,但是移除某个值时,原始值也变化)
>>> x = {'name':'yilia', 'age':'16', 'class':['math','english','music']}
>>> y = x.copy()
>>> x
{'age': '16', 'name': 'yilia', 'class': ['math', 'english', 'music']}
>>> y
{'age': '16', 'name': 'yilia', 'class': ['math', 'english', 'music']}
>>> y['class'].remove('math') # 删除或增加某个值中的元素时,原始字典受影响
>>> y
{'age': '16', 'name': 'yilia', 'class': ['english', 'music']}
>>> x
{'age': '16', 'name': 'yilia', 'class': ['english', 'music']}
>>> del y['age'] # 删除某项时,原始字典也不受影响
>>> y
{'name': 'yilia', 'class': ['english', 'music']}
>>> x
{'age': '16', 'name': 'yilia', 'class': ['english', 'music']}
>>> y['name'] = 'joice' # 更改某个值时,原始字典不受影响
>>> y
{'name': 'joice', 'class': ['english', 'music']}
>>> x
{'age': '16', 'name': 'yilia', 'class': ['english', 'music']}
(3) deepcopy: 深复制 ????????
>>> x = {'name':'yilia', 'age':'16', 'class':['math','english','music']}
>>> y = x.copy()
>>> z = deepcopy(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'deepcopy' is not defined
(4) get: 使用get获取字典中不存在的键不会报错
>>> x = {'name':'yilia', 'age':'16', 'class':['math','english','music']}
>>> print x.get('ye')
None
(5) has_key: 检查字典中是否含有给出的键
>>> x
{'age': '16', 'name': 'yilia', 'class': ['math', 'english', 'music']}
>>> x.has_key('name')
True
>>> x.has_key('ye')
False
(6) items和iteritems : 将字典中的项以列表方式返回
>>> x
{'age': '16', 'name': 'yilia', 'class': ['math', 'english', 'music']}
>>> x.items()
[('age', '16'), ('name', 'yilia'), ('class', ['math', 'english', 'music'])]
>>> i = x.iteritems()
>>> i
<dictionary-itemiterator object at 0x7f5c57c0a578>
>>> list(i)
[('age', '16'), ('name', 'yilia'), ('class', ['math', 'english', 'music'])]
(7)keys和iterkeys:
keys:将字典中的键以列表形式返回
iterkeys:迭代器
(8)pop: 用来获取对应于给定键的值,然后将这个键值对从字典中移除
(9)popitem:弹出随机项,并移除
>>> x
{'age': '16', 'name': 'yilia', 'class': ['math', 'english', 'music']}
>>> x.popitem()
('age', '16')
>>> x
{'name': 'yilia', 'class': ['math', 'english', 'music']}
(10)setdefault: 类似于get方法
(11)update: 利用一个字典项更新另一个字典
提供的字典中的项会被添加到旧的字典中,如有相同的键则会进行覆盖
>>> x
{'name': 'yilia', 'class': ['math', 'english', 'music']}
>>> y = {'name':'hello', "age":"18"}
>>> x.update(y) // x是旧的字典,y是新字典
>>> x
{'age': '18', 'name': 'hello', 'class': ['math', 'english', 'music']}
>>> y
{'age': '18', 'name': 'hello'}
(12)values和itervalues
values: 以列表的形式返回字典中的值
itervalues:迭代器