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()删除的是字典中的第一个键值对,没有参数,这里的返回值是一组键值对。

  • 相关阅读:
    迭代器和生成器
    案例:复制大文件
    案例:使用seek倒查获取日志文件的最后一行
    Leetcode165. Compare Version Numbers比较版本号
    Leetcode137. Single Number II只出现一次的数字2
    Leetcode129. Sum Root to Leaf Numbers求根到叶子节点数字之和
    Leetcode116. Populating Next Right Pointers in Each Node填充同一层的兄弟节点
    Leetcode114. Flatten Binary Tree to Linked List二叉树展开为链表
    Leetcode113. Path Sum II路径总和2
    C++stl中vector的几种常用构造方法
  • 原文地址:https://www.cnblogs.com/qiyuanchang/p/7354302.html
Copyright © 2011-2022 走看看