Python学习笔记【四】——《python基础教程》:: 字典:当索引不好用时

来源:互联网 发布:35位网络作家排名 编辑:程序博客网 时间:2024/05/16 03:17

第4章 字典:当索引不好用时

4.2. 创建和使用字典

  1. 字典格式:{key: value, key: value, … key: value}
  2. 空字典:{}
  3. 字典中键唯一,值不唯一。

4.2.1. dict函数

#使用(键,值)序列对建立字典>>> items = [('name', 'gumby'), ('age', 42)]>>> d = dict([('name', 'gumby'), ('age', 42)])>>> d{'age': 42, 'name': 'gumby'}#使用其他映射建立字典>>> d1 = dict(d)>>> d1{'age': 42, 'name': 'gumby'}#使用关键字参数来创建字典>>> d = dict(name='gumby', age=42)>>> d{'age': 42, 'name': 'gumby'}

4.2.2. 基本字典操作

  1. 与序列类似操作
操作 说明 len(d) 返回d中项(键-值对)的数量 d[k] 返回关联到键k上的值 d[k]=v 将值v关联到键k上 del d[k] 删除键为k的项 k in d 检查d中是否有含有键为k的项

2. 与列表区别

区别项 字典 列表 键类型 整型、浮点型、字符串串或元组等不可变类型 整型 自动添加 可将值关联到不存在的键,并字典中建立新项 不可将值关联到列表之外的索引 成员资格 查找键
(效率高,数据结构规模达时更效果更明显) 查找值

4.2.3. 字典的格式化字符串

使用方法:”string1 %(key)format string2” % dictionary

>>> "holly's phone number is %(holly)d" % {'holly':123, 'holly1':456}"holly's phone number is 123"

4.2.4. 字典方法

1. clear:清除字典中所有的项,无返回值。

>>> d={'key1' : 1, 'key2' : 2}>>> d{'key2': 2, 'key1': 1}>>> d.clear()>>> d{}

2. copy:返回一个具有相同键-值对的新字典。

copy方法实现的是浅复制,与其对应的是深复制,具体参照http://blog.csdn.net/heli200482128/article/details/73732072

3. fromkeys:使用给定的键建立新字典。

#使用所有字典的类型dict#不指定值,默认为None>>> dict.fromkeys(['name', 'age']){'age': None, 'name': None}#指定值,所有键都使用相同的值>>> dict.fromkeys(['name', 'age'],['1', '2']){'age': ['1', '2'], 'name': ['1', '2']}

4. get:宽松的访问字典项的方法,当访问的键不存在,不会出错。

>>> d = {}>>> d[1]Traceback (most recent call last):  File "<stdin>", line 1, in <module>KeyError: 1#当默认情况下,若键不存在,返回None>>> print d.get(1)None#也可以指定键不存在时的返回值>>> print d.get(1, 'N/A')N/A

5. has_key:相当于 k in d。Python3.0中不包含此函数。

6. items和iteritems

  1. items:所有字典项以列表方式返回,列表项来自于(键,值)。但是列表项无特殊顺序。

    >>> {'name': 'holly', 'phone': 123, 'addr': 'shandongyantai'}.items()[('phone', 123), ('name', 'holly'), ('addr', 'shandongyantai')]
  2. iteritems:返回字典项的迭代器

    >>> it = {'name': 'holly', 'phone': 123, 'addr': 'shandongyantai'}.iteritems()>>> it<dictionary-itemiterator object at 0x7fcdbbd7dcb0>>>> list(it)[('phone', 123), ('name', 'holly'), ('addr', 'shandongyantai')]

7. key和iterkeys

  1. keys:字典中键以列表形式返回。
  2. iterkeys:返回键的迭代器。

8. pop:获得对应给定键的值,将这个键-值对从字典中移除。

>>> d = {'name': 'holly', 'phone': 123, 'addr': 'shandongyantai'}>>> d.pop('name')'holly'>>> d{'phone': 123, 'addr': 'shandongyantai'}

9. popitem:弹出字典中随机项。

>>> d = {'name': 'holly', 'phone': 123, 'addr': 'shandongyantai'}>>> d.popitem()('phone', 123)>>> d{'name': 'holly', 'addr': 'shandongyantai'}>>> d.popitem()('name', 'holly')>>> d{'addr': 'shandongyantai'}

常用于依次移除并处理项。

10. setdefault:获得与给定键相关联的值,字典中不含有给定键的情况下设定键值。

#当键不存在时,返回默认值并更新字典>>> d.setdefault('name', 'N/A')'N/A'>>> d{'name': 'N/A'}#当键存在时,返回与其对应的值,但不改变字典。>>> d['phone'] = 123>>> d{'phone': 123, 'name': 'N/A'}>>> d.setdefault('phone', 'N/A')123>>> d{'phone': 123, 'name': 'N/A'}

11. update:利用字典项更新另一个字典

#字典中的项若键不存在于字典中,则该项会添加到就字典中;若键存在于字典中,字典中相应键值被覆盖>>> d = {'name': 'holly', 'phone': 123, 'addr': 'shandongyantai'}>>> d.update({'newkey': 'newvalue', 'phone': 456})>>> d{'phone': 456, 'name': 'holly', 'newkey': 'newvalue', 'addr': 'shandongyantai'}

12. values和itervalues

  1. values:以列表形式返回字典中的值,可能包含重复元素。

    >>> d = {'name': 'holly', 'phone': 123, 'addr': 'shandongyantai'}>>> d.values()[123, 'holly', 'shandongyantai']
  2. itervalues:返回字典中值的迭代器。

阅读全文
0 0