zoukankan      html  css  js  c++  java
  • 《转》python学习(9)字典

    转自 http://www.cnblogs.com/BeginMan/p/3156960.html

    一、映射类型

    我理解中的映射类型是:键值对的关系,键(key)映射值(value),且它们是一对多的关系。
    字典是Python唯一的映射类型。

    扩展1:哈希表
    一种数据结构,值是根据相关的键进行数据存储的,形成"键-值对"(key-value pairs),哈希表中的值是没有顺序的。

    扩展2:映射类型与序列类型的区别

    1):访问方式不同,序列类型用数字类型的键,而映射类型可以用其他对象类型做键(一般式字符串)

    >>> lis = ['a','b','c']
    >>> lis[2]
    'c'
    >>> dic = {'name':'a','father':'b','mother':'c'}
    >>> dic['mother']
    'c'

    2):存储类型不同,映射类型的键,直接或间接地与值相关。
    3):序列类型,有序之列;映射类型则无序之列

    二、字典

    1、工厂方法dict():

    >>> tu=(['a','b'],['xx','yy'])
    >>> tu
    (['a', 'b'], ['xx', 'yy'])
    >>> fdict = dict(tu)
    >>> fdict
    {'a': 'b', 'xx': 'yy'}

    2、访问形式:

    >>> dic
    {'father': 'b', 'name': 'a', 'mother': 'c'}
    >>> for obj in dic:
          print obj
    
    father
    name
    mother
    >>> for obj in dic.keys():
          print obj
    
        
    father
    name
    mother
    >>> for obj in dic.values():
          print obj
    
        
    b
    a
    c
    >>> for obj in dic.items():
          print obj
    
        
    ('father', 'b')
    ('name', 'a')
    ('mother', 'c')
    >>> 

    3、has_key()、in、not in来检查是否有某个键,has_key()已慢慢弃用了。

    4、有则更新,无则添

    5、删除

    del dic['name']   #删除元素
    del dic #删除整个

    6、操作符
    []、和 in、not in

    >>> if 'name' in dic:
          print dic['name']
    a

    7、相关函数
    dict():创建字典
    len():返回键值对数目
    hash(obj):返回obj的哈希值

    8、内建方法
    dict.clear():删除字典中所有元素
    dict.copy():浅copy
    dict.formkeys():创建字典
    dict.get(key,default=None):返回对应键值
    dict.has_key():键是否存在
    dict.items():返回字典中键值对元祖的列表
    dict.keys():键的列表dict.values():值的列表
    ......

    >>> dic.keys()
    ['father', 'name', 'mother']
    >>> dic.values()
    ['b', 'a', 'c']
    >>> dic.get('name')
    'a'

     三、注意

    1、不允许一个键对应多个值,一个键只能对应一项
    2、当键发生冲突时,取最后一个。
    3、Python不会检查键的冲突,也不会因为键的冲突而产生错误,如果检查每个键是否冲突势必会占用很多内存。

    >>> dic={'a':'ss','a':"xxxx"}
    >>> dic
    {'a': 'xxxx'}

    4、键必须是可哈希的。
    所有不可变类型都是可哈希的,不可变类型如(列表、字典)则不能。
    不可变类型:string,integer,tuple、
    可变类型:list,dict

    5、值相同的数字表示相同的键,如1和1.0的哈希值是相同的,因此它们是相同的键。

    >>> dic={1:'a',1.0:'b'}
    >>> dic
    {1: 'b'}
  • 相关阅读:
    遍历数据类型数组方式
    for 循环 和for..in循环遍历数组 的区别
    多个区域内有相同属性名称子元素,同一区域内 操作DOM子集 使用$("选择器",context)方法
    CSS 使用技巧
    JavaScript 动态加载页面 js文件
    angular2环境配置
    在路上●我的年青●逐步前进
    ARM v8-A 系列CPU的MMU隐射分析
    ARM Cortex-A53 Cache与内存的映射关系以及Cache的一致性分析
    二维图像的投影和图像重建分析之傅里叶变换法
  • 原文地址:https://www.cnblogs.com/nolonely/p/6623540.html
Copyright © 2011-2022 走看看