zoukankan      html  css  js  c++  java
  • Python核心数据类型——字典

    1.  字典中的元素是通过键来存取的,而不是通过偏移来存取,保存在字典中的项没有特定的顺序,支持在原处修改。

    #字典的创建方法
    >>> D1 = {}
    >>> D2 = {'spam': 2, 'eggs': 3}
    

    2.  当对新字典键进行赋值(之前没有被赋值的键),就会在字典内生成一个新的元素。

    >>> D1 = {'a': 1, 'b': 2}
    >>> D1['c'] = 3
    >>> D1
    {'a': 1, 'c': 3, 'b': 2}

    3.  删除和获取键

    >>> D1 = {'a': 1, 'b': 2}
    >>> D1.get('a')#如果'a'这个键不存在返回None,若存在返回映射的值
    1
    >>> D1.get('c', 'Key does not exist')#如果'c'这个键不存在返回'Key does not exist',若存在返回映射的值
    'Not this key'
    >>> D2 = {'a': 0, 'c': 3}
    >>> D1
    {'a': 1, 'b': 2}
    >>> D1.update(D2)#update方法类似于合并,若存在相同的键就用新的覆盖旧的
    >>> D1
    {'a': 0, 'c': 3, 'b': 2}
    >>>
    >>> D1.pop('a')         #pop方法删除一个键,并返回它的值
    0
    >>> D1
    {'c': 3, 'b': 2}
    >>> del D1['b']          #del方法删除一个键
    >>> D1
    {'c': 3}
    

    4.  字典的键可以实现稀疏数据结构。

    >>> D1 = {1: 'a', 100: 'b'} # 避免需要创建100个元素的数组(列表)
    >>> D1[1]
    'a'
    >>> D[100]
    >>> D1[100]
    'b'
    

    5.  键可以是任何不可变的对象(如数字,字符串),因为必须保证键的不可变,键是唯一的。

    6. 字典的一些方法

    >>> D2.keys()
    ['a', 'c']
    >>> D2.values()
    [0, 3]
    >>> D2.items()
    [('a', 0), ('c', 3)]

    7.  遍历字典

    >>> for key in D1.keys():
    ...     print key, D1[key]
    ...
    c 3
    b 2
    >>> for v in D1.values():
    ...     print v
    ...
    3
    2
    >>> for key in D1:
    ...     print key, D1[key]
    ...
    c 3
    b 2

    如果要在遍历字典的同时进行删除或添加操作,就不能用for key in D1,而要使用D1.keys(),因为本质上D1.keys()返回一个新的list,不随着D1的修改而改变。否则会出现

    RuntimeError: dictionary changed size during iteration

    >>> for key in D1.keys():
    ...     D1.pop(key)
    ...

     k, v 方式的遍历

    # D.items() 返回的是列表
    for k, v in D.items():
        print k, v
    
    # D.iteritems() 返回的是生成器
    for k, v in D.iteritems():
        print k, v
    
    print type(D.items())
    print type(D.iteritems())
    
    >>> <type 'list'>
    >>> <type 'dictionary-itemiterator'>
  • 相关阅读:
    Java HttpClient使用小结
    【剑指offer】Q18:树的子结构
    poj3041-Asteroids , 二分图的最小顶点覆盖数 = 最大匹配数
    jquery.validate+jquery.form提交的三种方式
    &quot;undefined reference to&quot; 问题解决方法
    [Oracle]
    Effective_java之二:慎用重载函数
    C99规范
    迭代、递归替代循环
    1)Linux程序设计入门--基础知识
  • 原文地址:https://www.cnblogs.com/restran/p/2265109.html
Copyright © 2011-2022 走看看