zoukankan      html  css  js  c++  java
  • 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:迭代器

  • 相关阅读:
    windows下python-nmap运行过程中出现的问题及解决办法
    命令行下cl.exe编译链接的问题及解决方法
    httrack: error while loading shared libraries: libhttrack.so.2的解决方法
    AES加解密非固定长度文本的用法
    John the Ripper password cracker试用
    ubuntu12.04使用root登陆的简单设置
    map按value查找相应元素
    ListCtrl添加右键菜单(ListCtrl类里编辑,给ListCtrl 发送NM_RCLICK消息)
    今天发现里一个非常好用的Listbox自绘类,带不同文字字体和图片,觉得很有必要记下来
    自绘listCtrl控件选中该行高亮(模拟windows)
  • 原文地址:https://www.cnblogs.com/songshu-yilia/p/5236004.html
Copyright © 2011-2022 走看看