• python基础——字典dict


    1.概念:

      (1)字典dict,是一系列的键—值对。每个键key都和一个值value相映射。(字典是python中唯一的映射类型。)

      (2)每一项item,是一个键值对key—value对。

      (3)键key:只能是不可改变的类型,如:数字、字符串、元组;键key不能使用list!!!

      (4)值value:可将任何python中的对象,用作字典中的值。

      (5)字典为可变类型

      (6)无序!!!因为字典只关注key-value的对应关系,不关心顺序。

      (7)字典,可以存储一个对象的多种信息,也可以使用字典来存储多个对象的信息。

    2.创建字典:

      (1)直接创建:

          使用{}包含,key和value之间,用冒号“:”分隔,形成一个item,每一个item之间用逗号分隔。

            eg:  {"key1": "value", "key2": "value2", "key3": "value3"}

      (2)使用dict函数:

          2.1:列表元素是元组:

            dict(列表)

            eg:

              list1 = [(key1, value1), (key2, value2), (key3,value3)]

              dict1 = dict(list1)

          2.2:列表元素是列表:

            dict(列表)

            eg:

              list2 = [[key1, value1], [key2, value2], [key3, value3]]

              dict2 = dict(list2)

         2.3:元组的元素是元组:

            dict(元组)

            eg:

              tuple1 = ((key1, value1), (key2, value2), (key3, value3))

              dict3 = dict(tuple1)

     

         2.4:使用等号的形式:

          dict4 = dict(key1=value1, key2=value2, key3=value3)

      (3)fromkeys(参数A, 参数B):

          2.3.1:创建字典,设置value默认值。

          2.3.2:参数A:字典的键组成的元组;

              参数B:创建的字典的value的默认值

             注意:参数A不可使用列表list,因为字典dict中,键key不可改变。

          2.3.3:eg:创建一个员工工资信息表,将员工工资默认值设置成3000:

                salary_dict = {}.fromkeys(('员工A', '员工B', '员工C'), 3000)

              

      (4)空字典:{}

          2.4.1:可以先使用“{}”,定义/创建一个空字典,然后再分行添加各个键值对。

          2.4.2:eg:

              dict2 = {}

              dict2['color'] = 'green'

              dict2['points'] = 5

             结果:

              {'color': 'green', 'points': 5}

          2.4.3:什么时候用?

              使用字典来存储用户提供的数据;或者在编写能自动生成大量键值对的代码时,都需要先创建一个空字典。

    3.访问字典的值:

        字典名[键名]

          eg:

            value1 = dict[key1]

    4.添加键值对:

      (1)字典名[键] = 值

          eg:

            dict1[new_key1] = new_value1

      (2)注意:

          键—值对的排列顺序,与添加顺序不同!

          因为:python只关心键和值之间的对应关系,不关心字典键—值对的添加顺序。

    5. 修改字典中的值:

      (1)要修改字典中的值,可以依次指定:字典名;要修改的值;所对应的键;新值。

      (2)eg:

          dict1 = {'color': 'green'}

          dict1['color'] = 'yellow'

          ——>{'color': 'yellow'}

    6.删除键值对:

      (1)使用del语句:

          del 字典名[要删除的键]

      (2)eg:

          del dict1['color']

      (3)注意:这样的话,要删除的键值对,就永远消失了。

    7.字典操作与方法:

      (1)len(dict):

          返回,字典dict中项item的数量

      (2)xxx in dict:

          检查,字典dict中是否含有键xxx的项item

      (3)clear():

          clear()方法清除字典中的所有项item,返回值为None。

          应用: 

    1 >>>x = {}
    2 >>>y = x
    3 >>>x['key1'] = 'value1'
    4 >>>y
    5 {'key1', 'value1'}
    6 >>>x = {}
    7 >>>y
    8 {'key1', 'value1'}

          这是由于:(1)将字典1——空字典的地址,赋值给变量X;(2)将变量X中的地址赋值给变量Y;(3)修改字典1的内容,导致访问X/Y,为字典1的地址,显示字典1修改后的内容;(4)将字典2——空字典的地址赋值给变量X,但是此时变量Y中还是字典1的地址;(5)访问Y,显示字典1

          

    >>>x = {}
    >>>y = x
    >>>x['key1'] = 'value1'
    >>>y
    {'key1': 'value1'}
    >>>x.clear()
    >>>y
    {}

        使用clear()方法进行清空,会清空原始字典中的所有元素。

      (4)copy()和deepcopy():

           7.4.1:copy():

                copy()方法会返回一个具有相同键—值对的新字典,实现的是“浅复制”

                注意:当副本中,发生替换值的时候,原始字典不受影响。

                   当副本中,发生值的增加或者删除的时候,原始字典不受影响。

          7.4.2:deepcopy():

                深复制——副本和原始字典没关系了

                from copy import deepcopy

                dict2 = deepcopy(dict1)

      (5)get()方法:

            1.返回,键对应的值。

            2.一般来说,如果,访问字典中不存在的键key时,程序会报错;但是,使用get方法访问字典中不存在的键key时,程序会返回None

            3.get(参数1, 参数2)

                参数1:字典中,要访问的值value,所对应的键key

                参数2:当访问字典中不存在的键key时,程序的自定义返回值,默认值为None

            4.eg: >>>dict1 = {}

                >>>dict1['key1']

                报错,keyerror

                >>>dict1.get('key1')

                None

                   >>>dict1.get('key1', 'N/A')

                   'N/A'

      (6)items():

            将字典的所有项item,以列表的方式返回,列表中的每一项都是(key,value)的形式。

            eg:

              >>>dict1 = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

              >>>dict1.items()

              [('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')]

            遍历使用:

              for key, value in dict1.items():

                print(key)

                print(value)

      (7)keys():

            将字典中的所有键key,以列表的方式返回。

            eg:

              >>>dict1 = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

              >>>dict1.keys()

              ['key1', 'key2', 'key3']

      (8)values():

           将字典中的所有值value,以列表的方式返回。

           eg:

             >>>dict1 = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

             >>>dict1.values()

             ['value1', 'value2', 'value3']

           注意:返回的值value的列表,可以包含重复的元素!!!(keys返回的列表中没有重复项)

          扩展:如何剔除重复项?

          A:使用集合set。

              集合set类似于列表list,但是每个元素都是唯一的,没有重复项。

          如何使用?

          A:   set(dict1.values())

      (9)pop():

          pop()方法,获得对应于给定键key的值value,然后将这个key—value对从字典中移除。

          eg:

            >>>dict1 = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

            >>>dict1.pop('key2')

            'value2'

            >>>dict1

             {'key1': 'value1', 'key3': 'value3'}

      (10)popitem():

          弹出,字典中随机的一项,类似于list.pop(),但是popitem()弹出的对象不一定是最后一项。

          何时使用?

            若想一个接一个地删除并处理项,该方法很高效。

      (11)setdefault():

            类似于get()方法,能够获取并返回,与字典给定键key相关联的值value。

            当给定键key,不存在时,setdefault()方法会返回默认值,并添加该项item。其中,默认值可选可设定,默认使用None。

            当给定键key,存在时,返回对应的值value,不改变字典。

            eg:

              >>>dict1 = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

              >>>dict1.setdefault('key1')

              'value1'

              >>>dict1.setdefault('key200')

              None

              >>>dict1

              {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key200': None}

              >>>dict1.setdefault('name', 'N/A')

              'N/A'

              >>>dict1

              {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key200': None, 'name': 'N/A'}

      (12)update()方法:

          update()方法利用一个字典,更新另外一个字典

          注意:提供的字典中的项,会被添加到旧的字典中,若有相同键key,则会进行覆盖。

          eg:

            >>>dict1 = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

            >>>dict2 = {'name': 'value10', 'key2': 'XXXXX'}

            >>>dict1.update(dict2)

            >>>dict1

            {'key1': 'value1', 'key2': 'XXXXX', 'key3': 'value3', 'name': 'value10'}

      (13)特殊:

            我们已经知道,字典中item是无序的。那么,如果使用sorted对字典进行排序会有什么后果呢?

            ——A:返回一个有序列表:该列表中的项,都是字典的键key。sorted对字典的key进行了排序

            eg:

              >>>dict1 = {'E': 'value1', 'C': 'value2', 'A': 'value3', 'B': 'value4'}

              >>>sorted(dict1)

              ['A', 'B', 'C', 'E']

    8.格式化输出:

        格式:   %(key)格式说明符 %字典对象名

    9.字典可以作为函数的可变长关键字的参数

          

  • 相关阅读:
    IntelliJ IDEA常用统一设置2-Inspections检查设置(Linux/Mac/Windows)
    IntelliJ IDEA版本:Ultimate、Community、EAP版本的区别
    IntelliJ IDEA重构技巧收集
    Java泛型中的类型擦除机制简单理解
    阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义
    Java中PO、BO、VO、DTO、POJO、DAO概念及其作用和项目实例图(转)
    Java使用logback记录日志时分级别保存文件
    Java中List,Set和Map详解及其区别和使用场景(转)
    Java中泛型的Class<Object>与Class<?>的区别(转)
    Java中泛型T和Class<T>以及Class<?>的理解(转)
  • 原文地址:https://www.cnblogs.com/tommyngx/p/10229057.html
Copyright © 2020-2023  润新知