• 《Python 第四章》字典


    字典
    * 创建和使用字典 *  dict()
    >>> phonebook = {'Alice': '2341', 'Beth': '9102', 'Ceil': '3258'}
    >>> phonebook
    {'Beth': '9102', 'Alice': '2341', 'Ceil': '3258'}
    >>> phonebook['Beth']
    '9102'
    >>> items = [('name', 'Gumby'), ('age', 42)]
    >>> d = dict(items)
    >>> d
    {'age': 42, 'name': 'Gumby'}
    * 基本字典操作 *
     字典在很多方面与序列sequence类似
     (1), len(d) 返回d中项(键-值对)的数量;
     (2), d[k] 返回关联到键 k 上的值。
     (3), d[k] = v 将值v关联到键 k 上。
     (4), del d[k] 删除键为 k 的项。
     (5), k in d 检查d中是否有含有键为k的项。
      字典与列表的三点区别:  * 键类型 * 自动添加 * 成员资格
    >>> x = []
    >>> x[42] = 'hi'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list assignment index out of range
    >>> x = {}
    >>> x[42] = 'hi'
    >>> x
    {42: 'hi'}
    * 字典的格式化字符串 *
    >>> "Ceil's phone number is %(Ceil)s." % phonebook
    "Ceil's phone number is 3258."
    * 字典方法 *
    #1 clear() 方法的必要性
    >>> _value = d.clear()         
    >>> d
    {}
    >>> print _value
    None
    为什么这个方法有用,请看 : 
    >>> x = {}
    >>> y = x
    >>> x['key'] = 'value'
    >>> y
    {'key': 'value'}
    >>> x = {}
    >>> y
    {'key': 'value'}
    对比
    >>> x = {}
    >>> y = x
    >>> x['key'] = 24
    >>> y
    {'key': 24}
    >>> x.clear()
    >>> y
    {}
    #2 copy() 浅拷贝与深拷贝
    >>> from copy import deepcopy             
    >>> d = {}
    >>> d['names'] = ['Alfred', 'Beth']
    >>> c = d.copy()
    >>> dc = deepcopy(d)
    >>> d['names'].append('Clive')
    >>> c
    {'names': ['Alfred', 'Beth', 'Clive']}
    >>> dc
    {'names': ['Alfred', 'Beth']}
    #3 fromkeys() 使用给定的键建立新的字典,每个键默认对应的值为None
    >>> dict.fromkeys(['name', 'age'], '(unkonw)')  
    {'age': '(unkonw)', 'name': '(unkonw)'}
    #4 get() 是一个更宽松的访问字典项的方法
    >>> print d['name']
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'name'
    >>> print d.get('name')
    None
    >>> print d.get('name', 'N/A')
    N/A
    >>> d
    {'names': ['Alfred', 'Beth', 'Clive']}
    >>> d['name'] = 'Eric'
    >>> d
    {'names': ['Alfred', 'Beth', 'Clive'], 'name': 'Eric'}
    #5 has_key 检查字典是否含有给出的键 d.has_key(k), k in d 一样
    >>> d = {}
    >>> d.has_key('name')
    False
    >>> d['name'] = 'Etric'
    >>> d.has_key('name')
    True
    #6 items 和 iteritems|items将所有的字典项以列表方式返回,后者返回迭代器
    >>> d
    {'name2': 'hi2', 'name': 'Etric'}
    >>> d.items()
    [('name2', 'hi2'), ('name', 'Etric')]
    >>> it = d.iteritems()
    >>> list(it)
    [('name2', 'hi2'), ('name', 'Etric')]
    #7 keys 和 iterkeys
    #8 pop 方法用来获得对应于给定键的值
    #9 popitem 方法类似于 list.pop, popitem 弹出随机项
    #10 setdefault 类似于 get, 特点是:在字典中不含有给定键的情况下设定相应键值
    #11 update  update 方法可以利用一个字典更新另外一个字典
    >>> d
    {'name2': 'hi2', 'name': 'Etric'}
    >>> x = {'name' : 'python update'}
    >>> d.update(x)
    >>> d
    {'name2': 'hi2', 'name': 'python update'}
    #12 values (以列表的形式返回字典中的值)和 itervalues
    >>> d
    {'name2': 'hi2', 'name': 'python update'}
    >>> d.values()
    ['hi2', 'python update']
    ** -- 小结 -- **
     *1 : 映射 : Python唯一内建的映射类型是字典
     *2 : 利用字典格式化字符串
     *3 : 字典的方法
    下一章 : 条件,循环和其他语句
  • 相关阅读:
    Windbg学习 (0x0002) 命令基础
    Windbg学习 (0x0001) 安装与基本配置
    python 20day--装饰器详解
    python 19day--生成器详解
    python 18day--迭代器详解
    python 17day--内置函数
    python 16day--函数作用域与函数式编程
    python 15day--递归函数与匿名函数
    python 14day--函数
    python 13day--集合、字符串格式化
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787216.html
Copyright © 2020-2023  润新知