zoukankan      html  css  js  c++  java
  • day3_字典

    一、说明

    字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

    dict = {key1:value1,key2:value2}

    字典的特性:
    字典是无序的,因为它没有下标,用key来当索引,所以是无序的
    字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重

    字典的查找速度非常快。

    备注:字典里key value都是成对出现的,  不能只有key没有value  如果value是空,可如下定义:

    dict1 = {1:''}

    二、字典的增加

    1、普通的增加

    如果这种增加key已经在字典中存在,则会覆盖原值

    实例:

    dict = {'name':'小红','phone':'188','sex':'女'}
    print(dict)
    dict['addr']='北京'         #增加一个键值对,如果字典中没有这个key,则增加上
    print(dict)
    dict['name']='小黑'         #如果字典中有这个key,则会覆盖
    print(dict)

    输出:

    {'name': '小红', 'sex': '女', 'phone': '188'}

    {'name': '小红', 'sex': '女', 'phone': '188', 'addr': '北京'}

    {'name': '小黑', 'sex': '女', 'phone': '188', 'addr': '北京'}

    2、setdefault()方法

    只添加不修改山转水也转存在则不变

    返回指定键的值,如果key不在字典中,将添加key到字典中,value默认为None,如果key在字典中,就不修改字典的值了,则返回字典中key对应的值。

    语法:

    dict.setdefault(key[,default=None])

    参数:

    key -- 字典中要查找的键。

    default -- 可选参数,如果指定键的值不存在时,返回该值,默认为 None。

    实例1:

    >>> dict = {'name':'小红','phone':'188','sex':'女'}

    >>> dict.setdefault('name')          #key:’name’在字典中存在,返回对应的value值‘小红’

    '小红'

    实例2:

    dict = {'name':'小红','phone':'188','sex':'女'}
    print(dict)
    dict.setdefault('email','123@163.com')       #key:email在字典中不存在,会加到字典中,key对应的value为'123@163.com'
    print(dict)
    dict.setdefault('addr')                       #key:addr在字典中不存在,会加到字典中,key对应的value默认为None
    print(dict)

    三、修改

    实例:

    dict = {'name':'小红','phone':'188','sex':'女'}
    dict['name']='小黑'
    print(dict)

    输出:

    {'phone': '188', 'sex': '女', 'name': '小黑'}

    四、删除

    1、pop()方法

    删除给定键所对应的键/值对,并返回被删除的值。给定键如果不在字典中,则必须设置一个default值,否则会报错,此时返回的就是default值。

    语法:

    dict.pop(key[,default])

    参数

    key: 要删除的键/值对所对应的键

    default: 可选参数,给定键不在字典中时必须设置,否者会报错(没有默认值),此时返回default值,

    实例:

    dict = {'name':'小红','phone':'188','sex':'女'}
    dict.pop('name')                                    #将'name'键值对删除
    print(dict)

    输出:

    {'phone': '188', 'sex': '女'}

    2、del命令

    实例:

    a = {'name':'小红','phone':'188','sex':'女'}
    del a['name']    #删除某个键值对
    print(a)
    del a           #删除字典
    print(a)         #输出不了东西了,整个列表没了,把这个变量就删了,内存里已经没有了

    输出:

    {'sex': '女', 'phone': '188'}

    Traceback (most recent call last):

      File "test.py", line 5, in <module>

        print(a)

    NameError: name 'a' is not defined

    3、popitem()方法

    随机返回并删除字典中的一个键/值对(一般删除末尾对)。

    如果字典已经为空,却调用了此方法,就报出KeyError异常。

    实例:

    a = {'name':'小红','phone':'188','sex':'女'}
    a.popitem()
    print(a)

    输出:

    {'name': '小红', 'phone': '188'}

    4、clear()方法

    用于删除字典内所有元素。

    实例:

    a = {'name':'小红','phone':'188','sex':'女'}
    a.clear()
    print(a)

    输出:

    {}

    五、查询

    1、通过key查询

    这种方式,如果key不存在,会报错

    实例:

    a = {'name':'小红','phone':'188','sex':'女'}
    print(a['phone'])            

    输出:

    188

    2、get() 方法

    Python 字典 get() 方法和 setdefault() 方法类似,返回指定键的值,如果键不在字典中,返回一个指定值,默认为None。

    get() 和 setdefault() 区别: setdefault() 返回的键如果不在字典中,会添加键(更新字典),而 get() 不会添加键。

    get()查找不报错,可以设置默认值

    get()与第一种的区别,就是get()没有key,不报错

    语法:

    dict.get(key[,default=None])

    参数:

    key -- 字典中要查找的键。

    default -- 可选参数,如果指定键的值不存在时,返回该值,默认为 None。

    实例1:

    dict = {'name':'小红','phone':'188','sex':'女'}
    print(dict.get('sdf'))                      #key'sdf'在字典中不存在,返回None,但是不添加到字典中
    print(dict.get('name'))               #key 'name'在字典中存在,返回'name'对应的value值,'小红'

    输出:

    None

    小红

    实例2:

    a = {1:'a',2:'b',3:'c'}
    print(a.get(4,'sdf'))           #如果找不到4这个key,则返回sdf内容

    输出:

    sdf

    3、判断key是否在字典中

    实例:

    a = {'name':'小红','phone':'188','sex':'女'}
    print('name' in a)  #判断这个key是否在字典中

    输出:

    True

    六、字典的内置函数和方法

    1、keys()方法

    以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回字典中的所有的键。

    实例:

    a = {'name':'小红','phone':'188','sex':'女'}
    print(a.keys())

    输出:

    dict_keys(['phone', 'sex', 'name'])

    2、values()方法

    以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回字典中的所有值。

    实例:

    a = {'name':'小红','phone':'188','sex':'女'}
    print(a.values())

    输出:

    dict_values(['小红', '188', '女'])

    3、update()方法

    用于更新字典中的键/值对,可以修改存在的键对应的值,也可以添加新的键/值对到字典中。

    用法与 Python dict() 函数相似。

    实例:

    a = {'name':'小红','phone':'188','sex':'女'}
    b = {1:'a',2:'b','name':'小黑'}
    a.update(b)
    print(a)

    输出:

    {'phone': '188', 'name': '小黑', 1: 'a', 2: 'b', 'sex': '女'}

    4、items()方法

    以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回可遍历的(键, 值) 元组数组。

    实例:

    a = {'name':'小红','phone':'188','sex':'女'}
    for k,v in a.items():             #遍历字典列表,
       
    print(k,'===>',v)

    输出:

    sex ===> 女

    phone ===> 188

    name ===> 小红

    5、cmp(dict1,dict2)函数

    用于比较两个字典元素。

    如果两个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于字典dict2返回-1。

    6、len(dict1)函数

    计算字典元素个数,即键的总数。

    实例:

    a = {'name':'小红','phone':'188','sex':'女'}
    print(len(a))

    输出:

    3

    7、str(dict1)函数

    将值转化为适于人阅读的形式,以可打印的字符串表示。

    8、tpye(dict1)函数

    返回输入的变量类型,如果变量是字典就返回字典类型。

    实例:

    a = {'name':'小红','phone':'188','sex':'女'}
    print(type(a))

    输出:

    <class 'dict'>

    七、字典的嵌套

    实例:

    all_stus = {
        'xiaohong':
            {
                'sex':'男',
                'shengao':'185',
                'age':'18',
                'addr':'beijing',
                'cars':['牧马人','911','野马','劳斯莱斯']

        },
        'xiaohei':
            {
                'sex':'女',
                'shengao':'190',
                'age':'30',
                'addr':'shanghai',
                'bags':
                    {
                        'qianbao':['LV','xxx'],
                        'beibao':['coach','abc']
                    }
            }
    }

    all_stus['xiaohong']['cars'].append('五菱宏光')        #将xiaohong下面的cars中加上五菱宏光这个车
    print(all_stus['xiaohong']['cars'])
    print(len(all_stus['xiaohong']['cars']))               #查询小红有几辆车

    all_stus['xiaohei']['sex']='男'                   #将xiaohei的性别改成男
    # print(all_stus)
    all_stus['xiaohei']['bags']['qianbao'].pop(0)     #删除xiaohei下面bags下面qianbao下的LV
    print(all_stus['xiaohei']['bags']['qianbao'])

    输出:

    ['牧马人', '911', '野马', '劳斯莱斯', '五菱宏光']

    5

    ['xxx']

  • 相关阅读:
    Gridview全选
    Gridview中绑定DropDownList
    图片流Base64编码 转图片
    jQuery 效果
    纯虚函数与抽象类
    c++的内存分配
    sizeof数据对齐问题
    C++中类所占的存储空间
    成员函数实现在类定义中与在类定义外的区别
    C++成员函数的存储方式
  • 原文地址:https://www.cnblogs.com/once-again/p/9562584.html
Copyright © 2011-2022 走看看