一、说明

字典的每个键值(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']

day3_字典的更多相关文章

  1. 【DG】Oracle_Data_Guard官方直译

    [DG]Oracle Data Guard官方直译 1 Oracle Data Guard 介绍   Oracle Data Guard概念和管理10g版本2   Oracle Data Guard ...

  2. DVWA实验之Brute Force(暴力破解)- Low

    DVWA实验之Brute Force-暴力破解- Low     这里开始DVWA的相关实验~   有关DVWA环境搭建的教程请参考: https://www.cnblogs.com/0yst3r-2 ...

  3. Oracle错误览表

    Oracle 错误总结及问题解决 ORA     本文转自:https://www.cnblogs.com/zhangwei595806165/p/4972016.html  作者@承影剑 ORA-0 ...

  4. Javacript实现字典结构

    字典是一种用[键,值]形式存储元素的数据结构.也称作映射,ECMAScript6中,原生用Map实现了字典结构. 下面代码是尝试用JS的Object对象来模拟实现一个字典结构. <script& ...

  5. python 数据类型 ----字典

    字典由一对key:value 组成的 python中常用且重量级的数据类型 1. key , keys, values 字典由一对key:value 组成的 python中常用且重量级的数据类型 1. ...

  6. 增强版字典DictionaryEx

    代码 public class DictionaryEx<TKey, TValue> : IDictionary<TKey, TValue> { /// <summary ...

  7. python学习笔记(字符串操作、字典操作、三级菜单实例)

    字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...

  8. python之最强王者(8)——字典(dictionary)

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

  9. python序列,字典备忘

    初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...

随机推荐

  1. [转]PowerDesigner大小写转换

    原文地址:https://blog.csdn.net/fzqlife/article/details/72769959?utm_source=blogxgwz7 在菜单栏找到:Tools-->E ...

  2. Java------------JVM(Java虚拟机)优化大全和案例实战

    JVM(Java虚拟机)优化大全和案例实战 堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Ge ...

  3. 嵌入式开发之hi3519---GPIO 按键驱动

    摸索了一个星期,终于把海思HI3515开发板的按键中断程序搞出来了,hi3515的核心芯片与网上例子较多的s3c之类的有一些区别,以至于浪费了好些时间去琢磨.管脚配置方式不一样,中断的使用情况也不一样 ...

  4. Mac获取公网ip

    终端输入 curl http://members.3322.org/dyndns/getip way 2: ➜ ~ wget http://ipecho.net/plain -O - -q ; ech ...

  5. [Algorithm] Asymptotic Growth Rate

    f(n) 的形式 vs 判定形势 但,此题型过于简单,一般不出现在考题中. Extended: link Let's set n = 2^m, so m = log(n) T(n) = 2*T(n^( ...

  6. [React] 13 - Redux: react-redux

    Ref: Redux 入门教程(三):React-Redux 的用法 组件拆分规范 使用 React-Redux,需要掌握额外的 API,并且要遵守它的组件拆分规范. React-Redux 将所有组 ...

  7. 如何在Django1.8 结合Python3.4版本中使用MySql

    Python2.7时代连接MySql的MySQLdb还不支持Python3.4. pip install pymysql 最关键的一点,在站点的__init__.py文件中,我们添加如下代码: 1 i ...

  8. Python判断字符集

    Python利用第三方库chardet可以判断字符集. https://chardet.readthedocs.io >>> import urllib >>> r ...

  9. 【netcore基础】MVC API全局异常捕捉中间件ExceptionHandlerMiddleWare

    项目中想通过统一的接口格式返回异常信息,而不是404 500等HTTP协议层的异常响应 例如 { , , "message":"用户名或密码不正确", &quo ...

  10. 【租房合同】2017北京市房屋租赁合同(自行成交版).doc

    最近在北京租房,找租房合同 这个文档还是比较新的,在百度文库上需要积分下载的文档,现在共享给大家吧. 下载地址: https://pan.baidu.com/s/1cEh7lhBqQgkJhB32Df ...