python之字典的增删改查

Posted denise1108

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之字典的增删改查相关的知识,希望对你有一定的参考价值。

Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典都是无序的,但查询速度快。

字典是一个key/value的集合,key可以是任意可被哈希(内部key被hash后作为索引)的类型。因此,key可以是文本、数字等任意类型。如果两个数字\'==\'判断相等,那么key就相等,value会产生覆盖(例如:1 == 1.0 # => True)。注意,浮点数比较很不精确,因此千万不要用浮点数作为key!

Jason是字符串,区别于字典,只是格式比较像(key-value)

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。键可以取任何数据类型,但必须是不可变的,所以列表不行,如可取字符串,数字或元组。

dict = {\'a\': 1, \'b\': 2, \'b\': \'3\'}
print(dict[\'b\']) #输出值是:3
print(dict)  #输出:{\'a\': 1, \'b\': \'3\'}

===========================================================================================================================================

 

一、创建字典

1. 空字典

stu_info = dict()#空字典

2. 字典由键和对应值成对组成。字典也被称作关联数组或哈希表。基本语法如下:

dict = {\'Alice\': \'2341\', \'Beth\': \'9102\', \'Cecil\': \'3258\'}

也可如此创建字典

dict1 = { \'abc\': 456 }
dict2 = { \'abc\': 123, 98.6: 37 }


二、查询、访问字典里的值

1. 把相应的键放入熟悉的方括弧,如下实例:

dict = {\'Name\': \'Zara\', \'Age\': 7, \'Class\': \'First\'};
print("dict[\'Name\']: ", dict[\'Name\'])
print("dict[\'Age\']: ", dict[\'Age\'])
#以上实例输出结果: #dict[\'Name\']: Zara       #dict[\'Age\']: 7

 

如果用字典里没有的键访问数据,会输出错误如下:

dict = {\'Name\': \'Zara\', \'Age\': 7, \'Class\': \'First\'}
print ("dict[\'Name\']: ", dict[\'hhName10\'])

以上实例输出结果:

Traceback (most recent call last):
  File "E:/Python学习/pycharm/python脚本/day3/test.py", line 32, in <module>
    print ("dict[\'Name\']: ", dict[\'hhName10\'])
KeyError: \'hhName10\'
2. dict.get()方法查询,如查询的key不存在,也不会报error,而是返回None或者如果指定了默认值,返回默认值
print(dict.get(\'name\', \'此处可指定默认值,key不存在就输出此值\')) #如果key不存在且没有指定默认值,则返回None

 3. 获取字典里所有的key,或者所有的value

dict = {\'Name\': \'Zara\', \'Age\': 7, \'Class\': \'First\'}
print(dict.keys())    #获取字典里面所有key
print(dict.values())  #获取字典里面所有的value

以上输出内容如下:
dict_keys([\'Name\', \'Age\', \'Class\'])
dict_values([\'Zara\', 7, \'First\'])

4. 循环取出字典里所有的key,这种方式只能取出key,不能取value

for key in dict:
    print(key)

以上内容输出结果是:
Name
Age
Class

5. 循环取出字典里的key-value

方法一:

dict = {\'Name\': \'Zara\', \'Age\': 7, \'Class\': \'First\'}
for i in dict:
    print(i,dict[i])

以上输出结果如下:
Name Zara
Age 7
Class First

方法二:

dict = {\'Name\': \'Zara\', \'Age\': 7, \'Class\': \'First\'}
for i in dict:
    s = \'%s==>%s\' % (i, dict[i])
    print(s)


输出结果:
Name==>Zara
Age==>7
Class==>First

方法三:(下面这种效率低,因为先会把字典转换成二维数组,然后在循环)

dict = {\'Name\': \'Zara\', \'Age\': 7, \'Class\': \'First\'}
for k,v in dict.items():
    print(\'%s==>%s\' % (k,v))


输出结果:
Name==>Zara
Age==>7
Class==>First

6. 判断key是否在字典里存在,返回结果是True或者False,第一种方式执行效率高

print(\'Name\' in dict)    #效率高,执行速度快

print(\'Name\'in dict.keys())

 

三、更新、修改字典里的值(键值对)

1. 新增,方式一

dict[\'phone\']=15811111111  #新增一个字典里没有的元素

2. 新增,方式二,与方式一的区别在于setdefault新增一个已经存在的key,它不会改变原来keyvalue

dict.setdefault(\'email\',\'qw@126.com\')  

3. 修改,方法同新增方式一

dict[\'Name\']=\'denise\'

4. 合并更新

d1={\'b\':1}
d2={\'a\':"v"}
d1.update(d2)
print(d1)  #输出为:{\'b\': 1, \'a\': \'v\'}

 

四、删除

1. dict.pop(‘key’)

dict.pop(\'Name\') #删除指定的key及其对应的value

2. del dict[\'key\']

del dict[\'Name\']  #删除指定的key及其对应的value

3. dict.clear()

dict.clear()  #清空这个字典,返回空的字典

4. dict.popitem()

dict.popitem() #从字典里随机删除一个元素

5. del dict

del dict
print(dict) # 报错:NameError: name \'dict1\' is not defined,因为此词典已被删除

 

以上是关于python之字典的增删改查的主要内容,如果未能解决你的问题,请参考以下文章

python3-字典的增删改查

Python 字典的增删改查

python 3.0 字典的增删改查

python学习-字典的增删改查

python-11-字典的增删改查

python序列(列表,元组,字典)的增删改查