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']

  • 相关阅读:
    hdu 5723 Abandoned country 最小生成树 期望
    OpenJ_POJ C16G Challenge Your Template 迪杰斯特拉
    OpenJ_POJ C16D Extracurricular Sports 打表找规律
    OpenJ_POJ C16B Robot Game 打表找规律
    CCCC 成都信息工程大学游记
    UVALive 6893 The Big Painting hash
    UVALive 6889 City Park 并查集
    UVALive 6888 Ricochet Robots bfs
    UVALive 6886 Golf Bot FFT
    UVALive 6885 Flowery Trails 最短路
  • 原文地址:https://www.cnblogs.com/once-again/p/9562584.html
Copyright © 2011-2022 走看看