一、说明

字典的每个键值(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. c#中的 virtual override 和abstract 以及sealed

    1.如果父类方法没有加virtual关键字,即不是一个虚方法,则在子类中只能隐藏基类方法,而不能覆盖. 2.如果父类方法加了virtual关键字,即它是一个虚方法,在子类中一样可以隐藏. 3.如果子类 ...

  2. Asp.Net WebApi学习教程之增删改查

    webapi简介 在asp.net中,创建一个HTTP服务,有很多方案,以前用ashx,一般处理程序(HttpHandler),现在可以用webapi 微软的web api是在vs2012上的mvc4 ...

  3. 《软件测试自动化之道》读书笔记 之 XML测试

    <软件测试自动化之道>读书笔记 之 XML测试 2014-10-07 待测程序测试程序  通过XmlTextReader解析XML  通过XmlDocument解析XML  通过XmlPa ...

  4. Node入门教程(8)第六章:path 模块详解

    path 模块详解 path 模块提供了一些工具函数,用于处理文件与目录的路径.由于windows和其他系统之间路径不统一,path模块还专门做了相关处理,屏蔽了彼此之间的差异. 可移植操作系统接口( ...

  5. [INS-20802] Oracle Net Configuration Assistant failed

    [INS-20802] Oracle Net Configuration Assistant failed.在安装Oracle 11g R2时出现了该错误提示.以前安装的时候没有碰到过类似的错误.原来 ...

  6. vue返回上一页面如果没有上一页面返回首页

    methods: { back(){ if (window.history.length <= 1) { this.$router.push({path:'/'}) return false } ...

  7. localhost兼容js不能用

  8. How to hard reset Visual Studio instance

    When developing extensions sometimes you just mess up, others someone else does. If you start gettin ...

  9. Oracle迁移至PostgreSQL工具之Ora2Pg

    1. 描述 Ora2Pg是一个免费的工具,用于将Oracle数据库迁移到PostgreSQL兼容的模式.它连接您的Oracle数据库,自动扫描并提取它的结构或数据,然后生成可以装载到PostgreSQ ...

  10. 转自ruby迷: 使用Net::SSH和Net::SCP编写Linux服务器管理脚本

    试了一下perl下安装ssh模块,整了半天linux/window上都装不上,各依赖模块的版本总是匹配不上,后改了一下思路,用ruby吧 Net::SSH和Net::SCP是两个Ruby操作SSH的g ...