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.字典可以作为函数的可变长关键字的参数

      

python基础——字典dict的更多相关文章

  1. python基础——字典(dict)

    字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 . dict1 = {} ...

  2. python基础-字典dict

    字典-dict 用途: 定义方法:通过{} 来存储数据,通过key:value (键值对)来存储数据,每个键值对通过逗号分隔.在键值对中,key 是不可变的数据类型,value 是任意数据类型 def ...

  3. Python基础:字典(dict)与集合(set)

    查找场景下与列表的性能对比 字典与集合之所以高效的原因是:内部结构都是一张哈希表. 平均情况下插入.查找和删除的时间复杂度为 O(1). 假设有数量100,000的产品列表: import time ...

  4. python基础之dict、set及字符

    python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射类型,采用键值对(key-value)的形式存 ...

  5. python基础——使用dict和set

    python基础——使用dict和set dict Python内置了字典:dict的支持,dict全称dictionary,在其它语言中也称为map(映射),使用键-值(key-value)存储,具 ...

  6. 第四篇:python基础之dict、set及字符

    python基础之dict.set及字符   python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射 ...

  7. python基础--字典

    Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...

  8. python基础—字典

    阅读文本需要3分钟,不建议跳读 节目清单 字典是python中最重要的数据类型,字典由“键-值”对组成的集合,字典中的“值”通过“键”来引用.这里将介绍字典的定义.访问.排序等功能. 字典的创建 字典 ...

  9. python基础(六)dict字典和文件操作open

    字典dict 使用key来标注value的数据类型,key和value是一一对应的.在字典中key是唯一的,所以字典也是无序的. #定义一个字典 dict = { 'name' : 'sylar', ...

随机推荐

  1. php5.3 yum安装升级版本到 php5.6

    centOS系统下如何将php升级到5.6,之前通过yum来安装lamp环境,直接升级的话,提示没有更新包,也就是说默认情况下php5.3.3是最新   1.查看已经安装的php版本号 键入下面代码: ...

  2. mysql [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GRO

    [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c ...

  3. 问题 A: E2 驾驭const

    题目描述 引入了const关键词,用于指定“常”对象及“常”对象成员,提供了对数据的一种保护机制,这C++语言的特色之一.但由此,也引出了一些语法上的要求.这些语法要求,实际上有一套完善的原则,需要熟 ...

  4. python-类对象以列表切片模式操作

    #类对象以列表切片模式操作 class Person: def __init__(self): self.cache=[] def __setitem__(self, key, value): #修改 ...

  5. P2096 最佳旅游线路

    最大字段和加贪心 算长了个见识吧 #include<iostream> #include<cstdio> #include<algorithm> using nam ...

  6. Notepad++配色方案

    1.下载notepad++样式文件 styles.xml 2.将该文件拷贝到 C:\Users\Administrator\AppData\Roaming\Notepad++ 目录(将Administ ...

  7. mac系统的几种u盘启动制作方式

    先拿一个U盘,格式化好(guid分区表之类的选项弄好) 1.通过终端制作: 1>下载好自己要安装的系统镜像,最新的在App Store上下,以前的可以去pc 苹果等地方下载 2>在终端输入 ...

  8. Element表单验证(1)

    Element表单验证(1) 首先要掌握Element官方那几个表单验证的例子,然后才看下面的教程. Element主要使用了async-validator这个库作为表单验证 async-valida ...

  9. BZOJ3669: [Noi2014]魔法森林(瓶颈生成树 LCT)

    Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 3558  Solved: 2283[Submit][Status][Discuss] Descript ...

  10. Spring Cloud 升级最新 Finchley 版本,踩坑指南!

    https://blog.csdn.net/youanyyou/article/details/81530240 Spring Cloud 升级最新 Finchley 版本,踩了所有的坑! 2018年 ...