美文网首页
python-8 字典 dict

python-8 字典 dict

作者: 巴巴11 | 来源:发表于2020-04-13 21:06 被阅读0次

    字典(dictionary)

    dict函数生成一个不含任何项的新字典。 由于 dict 是内建函数名,你应该避免使用它来命名变量。

    >>> eng2sp = dict()
    >>> eng2sp
    {}
    # 花括号 {} 表示一个空字典。你可以使用方括号向字典中增加项:
    >>> eng2sp['one'] = 'uno'
    # 通常来说,字典中项的顺序是不可预知的。
    
    >>> eng2sp['two']
    'dos'
    
    # len函数也适用于字典;它返回键值对的个数:
    >>> len(eng2sp)
    3
    
    # in操作符也适用于字典;它可以用来检验字典中是否存在某个 键 (仅仅有这个值还不够)
    >>> 'one' in eng2sp
    True
    >>> 'uno' in eng2sp
    False
    
    # 想要知道字典中是否存在某个值,你可以使用 values 方法
    >>> vals = eng2sp.values()
    >>> 'uno' in vals
    True
    
    def histogram(s):
        d = dict()
        for c in s:
            if c not in d:
                d[c] = 1
            else:
                d[c] += 1
        return d
    
    # 字典类有一个 get 方法,接受一个键和一个默认值作为参数。 如果字典中存在该键,则返回对应值;否则返回传入的默认值。
    >>> h = histogram('a')
    >>> h
    {'a': 1}
    >>> h.get('a', 0)
    1
    >>> h.get('b', 0)
    0
    
    # 在 for 循环中使用字典会遍历其所有的键。
    def print_hist(h):
        for c in h:
            print(c, h[c])
    
    # 字典中的键是无序的。 如果要以确定的顺序遍历字典,你可以使用内建方法 sorted
    >>> for key in sorted(h):
    ...     print(key, h[key])
    a 1
    o 1
    p 1
    r 2
    t 1
    
    
    

    逆向查找

    def reverse_lookup(d, v):
        for k in d:
            if d[k] == v:
                return k
        raise LookupError()
    
    raise 语句 能触发异常,这里它触发了 ValueError,这是一个表示查找操作失败的内建异常。
    
    下面是一个成功逆向查找的例子:
    
    >>> h = histogram('parrot')
    >>> key = reverse_lookup(h, 2)
    >>> key
    'r'
    和一个失败的例子:
    
    >>> key = reverse_lookup(h, 3)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 5, in reverse_lookup
    LookupError
    你触发的异常和 Python 触发的产生效果一样:都打印一条回溯和错误信息。
    
    raise语句接受一个详细的错误信息作为可选的实参。 例如:
    
    >>> raise LookupError('value does not appear in the dictionary')
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
    LookupError: value does not appear in the dictionary
    逆向查找比正向查找慢得多; 如果你频繁执行这个操作或是字典很大,程序性能会变差。
    

    全局变量
    要在函数内对全局变量重新赋值,你必须在使用之前 声明(declare) 该全局变量:

    been_called = False
    
    def example2():
        global been_called # global 语句 告诉编译器,“在这个函数里,当我说 been_called 时,我指的是那个全局变量,别生成局部变量”。
        been_called = True
    
    # 如果全局变量是可变的,你可以不加声明地修改它:
    known = {0:0, 1:1}
    def example4():
        known[2] = 1
    
    
    

    相关文章

      网友评论

          本文标题:python-8 字典 dict

          本文链接:https://www.haomeiwen.com/subject/mghomhtx.html