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:迭代器

 

posted @ 2016-03-02 18:06  松鼠的松子  阅读(370)  评论(0编辑  收藏  举报