zoukankan      html  css  js  c++  java
  • python 字典 dictionary

    Dictionary 字典

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元祖。

    字典是除列表外python中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过建来存取的,而不是通过偏存取。

    创建字典:

    >>> dic1={'name':'alex','age':'27','sex':'male'}
    >>> dic2=dict((('name','alex'),('age','27')))
    >>> print dic1
    {'age': '27', 'name': 'alex', 'sex': 'male'}
    >>> print dic2
    {'name': 'alex','age':'27'}
    >>>

    备注:键值对的key必须要是不可改变的数据类型,而value则可以是不同的数据类型,如数字,字符串,列表,元祖,甚至包括字典等。

    不可变数据类型:整型、字符串、元祖

    可变数据类型:列表、字典

    操作字典:

    >>> dic1={'name':'alex','age':'27','sex':'male'}

    新增记录:

    >>> dic1["job"]='it'        向字典中添加新的键值对
    >>> print dic1
    {'job': 'it', 'age': '27', 'name': 'alex', 'sex': 'male'}

    >>> dic1.setdefault('age',34)    使用setdefault函数,如果字典中已经存在age记录,则此命令不生效,也不会修改已经存在的键值对。如果不存在此key,则添加到字典中。
    '27'                setdefault函数执行完成之后,默认会有返回值输出,这个值就是字典中对应的key的valule。
    >>> print dic1
    {'job': 'it', 'age': '27', 'name': 'alex', 'sex': 'male'}

    查询字典:

    >>> print dic1    
    {'job': 'it', 'age': '27', 'name': 'alex', 'sex': 'male'}
    >>> dic1["name"]    通过字典中的key来查询对应的valule值。
    'alex'

    >>> dic1.has_key("age")    has_key()方法用来查询子弟爱你中是否存在这个key,返回值为False/True 。
    True

    >>> dic1.items()      items()方法用来获取字典中所有的键值对。
    [('job', 'it'), ('age', '27'), ('name', 'alex'), ('sex', 'male')]

    >>> dic1.keys()      keys()方法用来获取字典中所有的keys。
    ['job', 'age', 'name', 'sex']

    >>> dic1.values()      values()方法用来获取字典中所有的values。
    ['it', '27', 'alex', 'male']

    >>> dic1.clear()      clear()方法用来清空字典数据。

    >>>dic1.get('age')       get()方法用于获取字典中key对应的值,如果没有这个key,也不会给出任何报错。

    实例:

    >>> for key,value in dic1.items():    for循环可以指定两个变量,这样key可以获取字典对应的key,value可以获取字典对应的values。
    ... print(key,value)
    ...
    ('job', 'it')
    ('age', '27')
    ('name', 'alex')
    ('sex', 'male')

    修改字典记录:

    >>> dic1["age"]=34      修改字典key对应的values值,和列表,元祖等一样,直接对应的修改即可。
    >>> print(dic1)
    {'job': 'it', 'age': 34, 'name': 'alex', 'sex': 'male'}

    >>> dic2['age']=38
    >>> dic2
    {'age': 38, 'name': 'alex'}      age=38
    >>> dic1
    {'job': 'it', 'name': 'alex', 'age': '27', 'sex': 'male'}      age=27
    >>> dic1.update(dic2)        update()方法会将dic2里面的数据更新到dic1中,如果有相同的key,dic2的的值会覆盖dic1里面的值。
    >>> dic1
    {'job': 'it', 'name': 'alex', 'age': 38, 'sex': 'male'}    执行完update之后,dic1里面的age对应的value值变成了38。
    >>> dic2
    {'age': 38, 'name': 'alex'}      dic2中的age值没有发生变化。

    删除字典记录:

    >>> del dic1['name']    del删除dic1中的name记录,del删除的是键值对。

    >>> del dic1      这里是删除整个字典,从内存中删除。

    >>> dic1.clear()      clear()用来清空字典,返回一个空字典。

    >>> dic1.pop('age')    pop()方法用来删除字典中的一个key,pop方法有个返回值,这里返回的是age对应的values值。

    >>> dic1.popitem()    popitem()删除的是字典中的第一个键值对,没有参数,这里的返回值是一组键值对。

  • 相关阅读:
    boost json序列化
    boost serialize序列化
    lambda详解
    未知的生成错误““clr-namespace: test”mapping URI 无效
    无法解析的外部符号 "public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)"
    LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    事实证明:软件层次的操作可以毁掉硬件
    下载随书源码的好地方
    一道简单的题目(东财)
    VS2013破解
  • 原文地址:https://www.cnblogs.com/qiyuanchang/p/7354302.html
Copyright © 2011-2022 走看看