字典 (dict) 的增删改查及其他方法

一、字典的简介  

  字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

  字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

二、增加字典元素的方法

▷list['key'] = vaule

这种方法是通过字典的kye给字典添加元素,如果字典里已存在该key的值,则会覆盖,如果不存在,则会添加,如下如:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 
3 dic['addr'] = 'henan'
4 print(dic)
5 #输出结果为:{'age': 29, 'addr': 'henan', 'name': 'fuyong', 'job': 'none'}

6 dic['addr'] = 'xinyang'
7 print(dic)
8 #输出结果为:{'age': 29, 'addr': 'xinyang', 'name': 'fuyong', 'job': 'none'}

▷setdefault()方法:

此方法是根据函数对字典进行增添元素,参数为(‘key’,‘value’) value默认为none

与直接用 dict[key] = value 的添加元素方法不同,用setdefault(key,value)方法的时候,如果字典没有该key的时候,则会正常添加,如果以及有了该key,那么将不进行操作(不会覆盖原来的值)

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 dic.setdefault('name','lixiang')
3 print(dic)  #结果不会改变: {'age': 29, 'name': 'fuyong', 'job': 'none'}
4 
5 dic.setdefault('height')
6 print(dic)  #结果:{'age': 29, 'name': 'fuyong', 'height': None, 'job': 'none'}
7 
8 dic.setdefault('addr','henan')
9 print(dic) #结果 {'addr': 'henan', 'age': 29, 'name': 'fuyong', 'height': None, 'job': 'none'}

三、删除字典元素的方法

▷pop(key)方法:

与列表的pop()方法不同,字典的pop()方法必须得给它传一个key值,如果字典里没有该key,则会报错。

也可以用 pop(key,'返回值') 来指定返回值,此时,当找不到key的时候,则不会报错,会将指定的返回值返回

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 dic.pop('job')
3 print(dic)  #结果为:{'age': 29, 'name': 'fuyong'}
4 
5 dic.pop('job')
6 print(dic)  #此时以及没有job的key,就会报错 KeyError: 'job'

▷popitem()方法:

此方法类似于列表的pop()方法,用来随机删除一个元素,返回删除的那个元素的(健,值),如下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 print(dic.popitem())  #结果为('name', 'fuyong')
3 print(dic)          #结果为:{'job': 'none', 'age': 29}

▷del list[key]

此方法用来删除字典种指定key以及它所对应的value,如果找不到该key,则会报错,如下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 del dic['job']
3 print(dic) #结果为:{'age': 29, 'name': 'fuyong'}
4 
5 del dic['job']
6 print(dic)  #此时字典里已经没有job值,则会报错:KeyError: 'job'

▷clear()方法:

该方法与列表的clear()方法类似,用来清空字典,如下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 dic.clear()
3 print(dic)   #结果为:{}

▷del dic

该方法用来删除整个字典,如下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 del dic
3 print(dic)   #此时dic已经被删除,不存在了,所以会报错:NameError: name 'dic' is not defined

四、修改字典元素的方法

▷list['key'] = vaule

这种方法是通过字典的kye来修改对应的value值,如果字典里已存在该key的值,则会修改,如果不存在,则会重新添加

1  dic = {'name':'fuyong','age':29,'job':'none'}
2  
3 dic['addr'] = 'henan'  #此时没有addr的key  则会添加
4 print(dic)
5 #输出结果为:{'age': 29, 'addr': 'henan', 'name': 'fuyong', 'job': 'none'}
6 
7 dic['addr'] = 'xinyang' #此时以及有addr的key  则会修改
8 print(dic)
9 #输出结果为:{'age': 29, 'addr': 'xinyang', 'name': 'fuyong', 'job': 'none'}

▷update({key:value})方法:

该方法是用来追加、拓展原字典元素。

参数必须为一个字典,如下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 dic.update({'addr':'henan'})
3 print(dic)      #结果为:{'job': 'none', 'addr': 'henan', 'age': 29, 'name': 'fuyong'}

如果传入的字典里有部分key与原字典相同,则该key所对应的值会被覆盖,其他没有的key则会被添加,如下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 dic.update({'addr':'henan','name':'lixiang'})
3 print(dic)
4 #结果为:{'addr': 'henan', 'name': 'lixiang', 'job': 'none', 'age': 29}

五、查询字典元素的方法

▷dic[key]

可以通过key来索引查询字典的元素,如果查不到,则会报错

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 print(dic['name'])    #结果为:fuyong
3 print(dic['addr'])     #搜索不到,会报错。KeyError: 'addr'

▷get(key)方法:

该方法是用指定索引的方法来查找其所对应的元素,如果找不到,不会报错,可以通过 dic.get(key,'返回值') 方法指定找不到key时候的返回值,如下:

1 dic = {'name':'fuyong','age':29,'job':'none'}
2 print(dic.get('name'))  #结果为:fuyong
3 print(dic.get('addr'))  #结果为:none
4 print(dic.get('addr','找不到该数据')) #结果为:找不到该数据

6、用循环的方法来遍历字典:

▷keys()方法

此方法用来查询字典所有的key,可以用for循环进行遍历

 1 dic = {'name':'fuyong','age':29,'job':'none'}
 2 print(dic.keys())
 3 # 结果:dict_keys(['name', 'age', 'job'])
 4 
 5 for key in dic.keys():
 6     print(key)
 7 # 结果为:
 8 # job
 9 # name
10 # age

▷values()方法

此方法用来查询字典所有的values,可以用for循环进行遍历

 1 dic = {'name':'fuyong','age':29,'job':'none'}
 2 print(dic.values())
 3 # 结果:dict_values(['none', 29, 'fuyong'])
 4 
 5 for value in dic.values():
 6     print(value)
 7 # 结果为:
 8 # none
 9 # 29
10 # fuyong

▷items()方法

此方法用来查询字典所有 的键值,可以用for循环来遍历

 1 dic = {'name':'fuyong','age':29,'job':'none'}
 2 print(dic.items())
 3 # 结果:dict_items([('job', 'none'), ('name', 'fuyong'), ('age', 29)])
 4 
 5 for k,v in dic.items():
 6     print(k,v)
 7 # 结果为:    
 8 # job none
 9 # name fuyong
10 # age 29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

java基础学习_常用类02_Scanner类和String类_day12总结

============================================================================= ==...

9710
来自专栏黑泽君的专栏

java面试题

当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)...

25810
来自专栏互联网大杂烩

堆内存和栈内存

在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作...

8930
来自专栏程序你好

Java中嵌套类用法

在Java中,可以在另一个类中定义一个类。这些类称为嵌套类。它们使您能够对只在一个地方使用的类进行逻辑分组。因此,这增加了封装的使用,并创建了更具可读性和可维护...

18440
来自专栏小鹏的专栏

用一个脚本学习 python

# -*- coding: utf-8 -*- # Python 2.7 学习参考脚本 # print 打印函数 print "Hello Worl...

31370
来自专栏python成长之路

字典常用操作

19740
来自专栏塔奇克马敲代码

第6章 函数

21270
来自专栏大闲人柴毛毛

C++快速入门

引用变量 引用一个变量就是定义了一个变量,和原来的变量使用同一个值。引用变量将值改变,原来这个变量的值也随之改变。 它和传地址的性质一致。 /** *定义一...

34350
来自专栏http://www.cnblogs.com

python3 re模块

一.常用正则表达式符号和语法: '.' 匹配所有字符串,除\n以外 ‘-’ 表示范围[0-9] '*' 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 ...

516120
来自专栏逆向技术

C语言第八讲,指针*

            C语言第八讲,指针* 一丶简单理解指针 说到指针,很多人都说是C语言的重点. 也说是C语言的难点. 其实指针并不是难.而是很多人搞不清地...

41960

扫码关注云+社区

领取腾讯云代金券