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': ''}
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之字典的增删改查的更多相关文章

  1. 2018.8.1 python中字典的增删改查及其它操作

    一.字典的简单介绍 1.dict 用{}来表示       键值对数据           {key:value} 唯一性 2.键都必须是可哈希,不可变的数据类型就可以当做字典中的键 值没有任何限制 ...

  2. Python 基础字典的增删改查

    # 字典相关的代码## 1.字典的特性:a 字典的无序性: b 数据关联性强 C 键键值对 唯一一个映射数据类型# 字典的键必修二是可哈希的(不可变的数据类型:,字符串,数字的,布尔值,元祖)# 并且 ...

  3. Python学习————字典的增删改查

    增加:dic1['KEY'] = value -->若之前有KEY,则会覆盖.若没有KEY,则新增至尾处dic.setdefault('KEY',value/None) --->若之前有K ...

  4. DAY5(PYTHON) 字典的增删改查和dict嵌套

    一.字典的增删改查 dic={'name':'hui','age':17,'weight':168} dict1={'height':180,'sex':'b','class':3,'age':16} ...

  5. python字典的增删改查

    字典dict 知识点: {}括起来,以键值对形式存储的容器性数据类型: 键-必须是不可变数据类型,且是唯一的: -值可以是任意数据类型.对象. 优点:关联性强,查询速度快. 缺点:以空间换时间. 字典 ...

  6. python操作mysql数据库增删改查的dbutils实例

    python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...

  7. 字典(dict),增删改查,嵌套

    一丶字典 dict 用{}来表示  键值对数据  {key:value}  唯一性 键 都必须是可哈希的 不可变的数据类型就可以当做字典中的键 值 没有任何限制 二丶字典的增删改查 1.增 dic[k ...

  8. python学习(list增删改查、及常用方法)

    1.Python多条件判断: 多条件判断if: passelse: pass循环 while for i = 0 while i > 1: print('hello') else: print( ...

  9. Python之注册表增删改查(干货)

    在Windows平台下,对注册表的增删改查的需求比较多,微软提供了很多用于访问,修改注册表等的API,我们可以使用诸如bat,或者C++等各种方式去访问修改注册表.无所不能的python下如何完成这些 ...

随机推荐

  1. 洛谷P3980 志愿者招募

    题意:懒得写了...... 解: 一开始想的是每天建点,每种人建点,然后连边费用流,发现一个人可以管辖多天,不好处理. 回想起了网络流24题中的"最长k可重线段集","最 ...

  2. django2+uwsgi+nginx上线部署到服务器Ubuntu16.04(最新最详细版)

    1.前期准备 1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用. pip freeze >requirements.txt 2.将项目文件夹→右键→添加压 ...

  3. 记录EXCEL格式和TXT文本格式之间的互转

    EXCEL格式转变成TXT文本格式 1.打开execl文档,点击文件另存为 2.选择txt保存 3.重命名文档,打开该txt文档 4.按Ctrl+H,将文档中空格转换成其他分割符,单击确定 TXT格式 ...

  4. redis五种数据类型的使用场景

    string 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...

  5. TestNg1. 基本介绍注解介绍和如何让在maven中引用

    1.更适合测试人员,有很多的套件. maven中引用: <!-- https://mvnrepository.com/artifact/org.testng/testng --><d ...

  6. testng学习-before&after,parameters,并行,factory,beanshell,监听器,依赖注入

    一系列的before after的操作测试 [TestNG] Running: C:\Users\user\AppData\Local\Temp\testng-eclipse-1538841744\t ...

  7. java中不定参数的使用

    https://www.cnblogs.com/xy-hong/p/7192796.html

  8. Luogu P3168 [CQOI2015]任务查询系统

    题目链接 \(Click\) \(Here\) 差分主席树,就是把主席树做成一个差分前缀和的形式,还是很容易想到的. 写主席树的时候几个注意点: 查询可能开始于所有任务之前,二分任务点要把左边界设置为 ...

  9. Luogu P2468 [SDOI2010]粟粟的书架

    一道二合一的题目.两部分思维难度都不太高,但是也都很巧妙.尤其是主席树的\(50\)分,由于本人初学主席树,所以没有见过主席树上二分的套路,就被小小的卡了一下.. \(n <= 200\) \( ...

  10. spring中IOC和AOP原理

    IoC(Inversion of Control): (1)IoC(Inversion of Control)是指容器控制程序对象之间的关系,而不是传统实现中,由程序代码直接操控.控制权由应用代码中转 ...