zoukankan      html  css  js  c++  java
  • python 字典详解

    1.字典的定义

    • 字典类似于列表,但相对于列表来说字典更加通用,列表的下标必须必须为整数,而字典下标则可以为任意字符串/数字等,不可以是可变数据类型(列表,数组,元组)
    • 字典包含下标(keys)集合和值(vaule)集合,且keys是唯一的

    2.字典的创建

      实例如下:

      

     1 d1={'name':'alex','age':18,1:'85'}
     2 d2={}
     3 d2['name']='john'
     4 d2['age']=15
     5 d3=dict(name='lili',age=12)
     6 d4=dict(zip(('name','age'),('tom',20)))
     7 print "d1=",d1
     8 print "d2=",d2
     9 print "d3=",d3
    10 print "d5=",d4

      输入如下

    1 d1= {1: '85', 'age': 18, 'name': 'alex'}
    2 d2= {'age': 15, 'name': 'john'}
    3 d3= {'age': 12, 'name': 'lili'}
    4 d4= {'age': 20, 'name': 'tom'}

    3.字典的特性

    • 无序性

        字典最终显示的值是不会按照插入的先后顺序所决定的。因为字典的本质是hash table,而Hash的本质是, 将一数列作为Key尽量平均分配另一个数列Value到程序已经申请好的Array上。

    • 键值唯一性

        字典中的键值是唯一(重复的只会保存一个)

    4.字典的基本操作

    • 修改字典
    1 #coding=utf-8
    2 d1 = {'name':'alex'}
    3 print '字典修改前:', d1 4 d1['name']='Bod' 5 print '字典修改后:' ,d1

      实例输出结果:

    1 字典修改前: {'name': 'alex'}
    2 字典修改后: {'name': 'Bod'}
    • 字典访问
    1 #coding=utf-8
    2 d1 = {'name':'alex','age':18}
    3 print 'd1["name"]:',d1["name"]
    4 print 'd1["age"]:',d1["age"]

      实例输出结果:

    1 d1["name"]: alex
    2 d1["age"]: 18

      键值不存在的情况无法通过该方法获取值,会抛出异常

    • 字典删除
     1 #coding=utf-8
     2 
     3 #删除某个键
     4 d1 = {'name':'alex','age':18}
     5 print '删除前字典内容:',d1
     6 del d1['name']
     7 print '删除后字典内容:',d1
     8 
     9 #清空字典
    10 d2={'name':'alex','age':18}
    11 print '清空前字典内容:',d2
    12 d2.clear()
    13 print '清空后字典内容:',d2
    14 
    15 
    16 #删除字典
    17 d3={'name':'alex','age':18}
    18 print '删除前字典内容:',d3
    19 del d3
    20 #捕获异常
    21 try:
    22     print '删除后字典内容:',d3
    23 except NameError:
    24     print 'd3不存在'

      实例输出结果:

    1 删除前字典内容: {'age': 18, 'name': 'alex'}
    2 删除后字典内容: {'age': 18}
    3 清空前字典内容: {'age': 18, 'name': 'alex'}
    4 清空后字典内容: {}
    5 删除前字典内容: {'age': 18, 'name': 'alex'}
    6 删除后字典内容: d3不存在

      删除字典指定键值时,需要确保键值存在,否则会抛出异常

     5.字典的内置函数

    函数名称 函数作用 函数结果
    cmp({"name":"alex"},{"name":"Bob"}) 比较两个字典是否相同 完全相同返回0
    len({"name":"alex"}) 计算字典键的个数 1
    str({"name":"alex"}) 将字典转为字符串 "{'name': 'alex'}"
    type({"name":"alex"}) 输出类型 dict
    dict1.clear() 删除字典所有键值  
    dict1.copy() 复制字典  
    dict.fromkeys(seq,vaule) 创建字典,以seq为key,value为值  
    dict1.get(key) 根据key获取vaule,如果可以存在,则获取值,不存在,则返回None  
    dict1.has_key(key) 判断key是否存在,存在返回True,不存在Flase  
    dict1.items() 以列表返回可遍历的(键, 值) 元组数组  
    dict1.keys() 以列表返回所有key  
    dict1.setdefault() 和get功能相同  
    dict1.values() 以列表返回字典所有值  
    dict1.update(dict2) 将dict2添加到dict1中  
    dict1.iteritems() 返回一个迭代器  
    dict1.pop(key) 与del功能相同  
    dict1.popitem() 删除,并有返回值,字典为空时调用该方法抛出异常  

      

      

  • 相关阅读:
    方法 —— 参数传递、重载、命令行参数与可变参数
    Float型 与 Double型数据的存储方式
    交换两个变量的值
    【LeetCode-数组】螺旋矩阵(顺时针打印矩阵)
    【LeetCode-链表】二叉树展开为链表
    【LeetCode-动态规划】零钱兑换 II
    【LeetCode-树】将有序数组转换为二叉搜索树
    【LeetCode-树】从上到下打印二叉树 III
    【LeetCode-链表】相交链表
    【LeetCode-字符串】字符串转换整数 (atoi)
  • 原文地址:https://www.cnblogs.com/gj5379/p/7668809.html
Copyright © 2011-2022 走看看