python 字典相关操作
字典
字典的增删改查
字典的创建方式:

# 创建字典类型
info = {
'name':'李白',
'age':'25',
'sex':'男'
} msg = {
'user01':'Longzeluola',
'user02':'xiaozemaliya',
'user03':'cangjingkong'
}

字典存储数据的时候,采取的是key:value的形式,是一组无序的存储。在需要的时候通过key就能够快速的获取value。

msg = {
'user01':'Longzeluola',
'user02':'xiaozemaliya',
'user03':'cangjingkong'
}
print(msg['user01']) # Longzeluola

字典的值可以根据key值获取并且进行更改。

msg = {
'user01':'Longzeluola',
'user02':'xiaozemaliya',
'user03':'cangjingkong'
}
msg['user03'] = '泷泽萝拉'

结果:
{'user01': 'Longzeluola', 'user02': 'xiaozemaliya', 'user03': '泷泽萝拉'}
那么字典中如果需要新添加数据的话,也可以通过设置key-value的形式来进行添加。

msg = {
'user01':'Longzeluola',
'user02':'xiaozemaliya',
'user03':'cangjingkong'
}
msg['user04'] = 'MaLiCang'
print(msg)

结果:
{'user01': 'Longzeluola', 'user02': 'xiaozemaliya', 'user03': 'cangjingkong', 'user04': 'MaLiCang'}
而如果需要删除python中的数据,可以使用如下的三种方法:

msg = {
'user01':'Longzeluola',
'user02':'xiaozemaliya',
'user03':'cangjingkong'
}
# 删除字典方法一
#del msg['user01'] # {'user02': 'xiaozemaliya', 'user03': 'cangjingkong'}
# 删除字典方法二
#msg.pop('user01') # # {'user02': 'xiaozemaliya', 'user03': 'cangjingkong'}
# 删除字典方法三
msg.popitem() # {'user01': 'Longzeluola', 'user02': 'xiaozemaliya'}

补充
在上面的一些操作中,我们基本实现了字典的增删改查,但是在查的过程中,有一点是需要注意的,如上面的查询方式dir[key]这种,如果key值并不存在于字典中,就会出现一个keyerror的错误,所以为了避免错误,我们通常情况下都不会使用这种方式来进行字典的key值查找,而是通过下面的方法。

# 创建一个字典
msg = {
'user1101':'Xiaozemaliya',
'user1102':'Wutentlan',
'user1103':'Cangjingkong'
}
# 通过key值获取value 使用get方式,存在key,那么就返回对应的value,如果不存在key,那么就返回None
print(msg.get('user1101')) # Xiaozemaliya
print(msg.get('user1108')) # None

判断一个key是否存在于一个字典中,可以使用in 运算符。

# 创建一个字典
msg = {
'user1101':'Xiaozemaliya',
'user1102':'Wutentlan',
'user1103':'Cangjingkong'
}
# 使用in检测字典中是否存在指定的key
print('user1101' in msg) # True
print('user1109' in msg) # False

上面是使用in运算符判断key是否存在,需要注意的是,在python2.x 的版本中,判断一个key是否存在于字典中,可以使用msg.has_key()的方式来进行判断。
多级字典嵌套及操作
在字典中,一直以key-value的形式进行数据存储,但是value的值除了是字符串以外,还可以是其他类型的值。同时,在字典中,也可以继续嵌套字典等数据。具体操作如下:

# 创建一个多级的字典
av_catalog = {
"欧美":{
"www.youporn.com": ["很多免费的,世界最大的","质量一般"],
"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
"x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
},
"日韩":{
"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
},
"大陆":{
"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
}
} # 更改key值
av_catalog['大陆']['1024'][1] = '可以在国内做一个镜像' print(av_catalog)

关于字典的补充说明
values 打印字典里面的所有的值

msg = {
'stu1101':'XiaomingStudent',
'stu1102':'XiaohongStudent',
'stu2201':'XiaolvStudent',
'stu3101':'XiaoZhangStudent'
}
# values() 方法 输出字典中所有的值
print(msg.values())

结果为:
dict_values(['XiaomingStudent', 'XiaohongStudent', 'XiaolvStudent', 'XiaoZhangStudent'])
keys 打印所有的key

msg = {
'stu1101':'XiaomingStudent',
'stu1102':'XiaohongStudent',
'stu2201':'XiaolvStudent',
'stu3101':'XiaoZhangStudent'
}
# keys 打印所有的key
print(msg.keys())

结果为:
dict_keys(['stu1101', 'stu1102', 'stu2201', 'stu3101'])
setdefault
设置新的key:value ,如果设置的key在字典中存在,那么就会把之前的key以及value返回,新设置的就会失效,如果没有就把设置的key:value添加到字典中去。

msg = {
'stu1101':'XiaomingStudent',
'stu1102':'XiaohongStudent',
'stu2201':'XiaolvStudent',
'stu3101':'XiaoZhangStudent'
}
# 使用setdefault方法设置key:value
msg.setdefault('stu3101','YanYanStudent') # 此时3101key 已经存在,并不会新增的内容所影响
print(msg)
msg.setdefault('stu3102','LuLuStudent') # 此时新增加的key 3102 添加成功
print(msg)

update 更新合并
使用update方法,可以将两个字典合并,并且如果字典中存在重复的内容,会产生覆盖,如果内容不重复,就会被合并到一个字典中。

msg = {
'stu1101':'XiaomingStudent',
'stu1102':'XiaohongStudent',
'stu2201':'XiaolvStudent',
'stu3101':'XiaoZhangStudent'
}
test_info = {
'T1101':'YanYanTeacher',
'T1102':'LiBai',
'stu2201':'JingjingStudent'
}
msg.update(test_info)
print(msg)

输出结果为:
{'stu1101': 'XiaomingStudent', 'stu1102': 'XiaohongStudent', 'stu2201': 'JingjingStudent', 'stu3101': 'XiaoZhangStudent', 'T1101': 'YanYanTeacher', 'T1102': 'LiBai'}
items 把一个列表转为一个元组

msg = {
'stu1101':'XiaomingStudent',
'stu1102':'XiaohongStudent',
'stu2201':'XiaolvStudent',
'stu3101':'XiaoZhangStudent'
}
print(msg.items())

输出结果为:
dict_items([('stu1101', 'XiaomingStudent'), ('stu1102', 'XiaohongStudent'), ('stu2201', 'XiaolvStudent'), ('stu3101', 'XiaoZhangStudent')])
fromkeys 创建一个初始化列表
test_dir = dict.fromkeys(['stu01','stu02','stu03'],[1,{'name':'YanYanStudent'}])
print(test_dir)
输出的结果为:
{'stu01': [1, {'name': 'YanYanStudent'}], 'stu02': [1, {'name': 'YanYanStudent'}], 'stu03': [1, {'name': 'YanYanStudent'}]}
此时通过dict.fromkeys方法,就创建出了一个新的字典,但是在这个字典中存在一个容易错的地方,如下:

test_dir = dict.fromkeys(['stu01','stu02','stu03'],[1,{'name':'YanYanStudent'}])
# 尝试着更改这个字典中的内容通过key值
test_dir['stu01'][1]['name'] = 'YanYanTeacher'
print(test_dir)

我们在代码中更改了其中的一个key的值,结果输出却为:
{'stu01': [1, {'name': 'YanYanTeacher'}], 'stu02': [1, {'name': 'YanYanTeacher'}], 'stu03': [1, {'name': 'YanYanTeacher'}]}
此时我们发现所有的key对应的value都被改变了。而这也是我们在使用这个fromkeys方法的时候需要注意的点。
字典的循环输出
将字典中key和value循环输出,有以下的两种方式:

# 创建一个字典
msg = {
'T1101':'YanYanTeacher',
'T1201':'LuLuTeacher',
'T1301':'JingJingTeacher'
} # 循环输出字典 -- 第一种方法
for i in msg:
print(i,msg[i]) # 循环输出字典 -- 第二种方法
for i,v in msg.items():
print(i,v)

上面两种循环输出列表的方式输出的结果是一样的,但是较为推荐使用第一种,因为第一种方式的执行效率要高于第二种,因为第一种是直接根据key值取出value,而第二种方式则是要多出一步将字典转换为列表的步骤,所以效率相对来讲比较低。
python 字典相关操作的更多相关文章
- python文件相关操作
Python文件相关操作 打开文件 打开文件,采用open方法,会将文件的句柄返回,如下: f = open('test_file.txt','r',encoding='utf-8') 在上面的代码中 ...
- python字符串 列表 元组 字典相关操作函数总结
1.字符串操作函数 find 在字符串中查找子串,找到首次出现的位置,返回下标,找不到返回-1 rfind 从右边查找 join 连接字符串数组 replace 用指定内容替换指定内容,可以指定次数 ...
- Python字典增删操作技巧简述
Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些基础应用.比如今天我们为大家介绍的Python字典的相关操作,就是我们在学习过程中需要熟练掌握的技 ...
- !!Python字典增删操作技巧简述+Python字典嵌套字典与排序
http://developer.51cto.com/art/201003/186006.htm Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些 ...
- python 集合相关操作
集合相关操作 集合是一个无序的,不重复的数据组合,它有着两个主要作用:去重以及关系测试. 去重指的是当把一个列表变成了集合,其中重复的内容就自动的被去掉了 关系测试指的是,测试两组数据之间的交集.差集 ...
- python集合相关操作
集合相关操作 集合是一个无序的,不重复的数据组合,它有着两个主要作用:去重以及关系测试. 去重指的是当把一个列表变成了集合,其中重复的内容就自动的被去掉了 关系测试指的是,测试两组数据之间的交集.差集 ...
- Python容器相关操作
(集合与字典除外)的容器相关操作 (1)容器的拼接 >>> 'abc' + 'def' 'abcdef' (2)容器的重复 >>> (1, 2) * 3 (1, 2 ...
- Python 字典(Dictionary)操作详解
Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...
- 【python】Python 字典(Dictionary)操作详解
Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型.一.创建字典字典由键和对应值成对组成.字典也被称作关联数组或哈希表.基本语法如下: dict = {'} ...
随机推荐
- telegraf、influxDB、Grafana的安装与基本使用
目的理解influxDB的数据收集原理和方法为使用grafana分析数据及展示结作好准备介绍[收集数据] Telegraf 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 Inf ...
- bzoj千题计划183:bzoj1197: [HNOI2006]花仙子的魔法
http://www.lydsy.com/JudgeOnline/problem.php?id=1197 题意转化:在n维空间中放m个n维球,问最多将空间分成几部分 f[i][j] 表示在i维空间中放 ...
- 20155215 2016-2017-2 《Java程序设计》第8周学习总结
20155215 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 第十四章 NIO使用频道(Channel)来衔接数据节点.在处理数据时,NIO可以让你设置缓 ...
- continue和break区别
break 语句用于跳出循环. continue 用于跳过循环中的一个迭代. 一个迭代,就是一次循环,continue终止本次循环,继续下一次循环: break,循环终止不再循环.
- 01:MFC应用程序编程
一 MFC的发展 VC 1.0->VC 5.0->VC 6.0->VC2008 SP1)->VS2010 二 MFC基础 1 MFC 微软基础类库 采用类的方式,将Win32 ...
- Chrome插件之ModHeader
一.ModHeader是什么 ModHeader顾名思义就是让我们可以自定义HTTP请求头或者是重写响应头,包括新增请求头/响应头或者覆盖Chrome浏览器设置的请求头的默认值,同时还可以根据URL ...
- CSS float浅析
写在开篇: 浮动属性的设计初衷,只是为了实现文本环绕效果! 时刻牢记这一点,才能正确使用浮动. 由于浮动元素脱离文档流,它后面的块级元素会忽略它的存在,占据它原本的位置,但是这个块级元素中的内联元素, ...
- 直接读取修改exe文件
1. 前言 配置器的编写有很多的方式,主要是直接修改原始的受控端的程序,有的方式是把受控端和配置信息都放到控制端程序的内部,在需要配置受控端的时候直接输入配置信息,生成受控端:也有的方式是在外部直接修 ...
- springboot整合Thymeleaf模板引擎
引入依赖 需要引入Spring Boot的Thymeleaf启动器依赖. <dependency> <groupId>org.springframework.boot</ ...
- centos7.2环境yum方式快速搭建lnmp环境nginx+mariadb+php-fpm
centos7.2环境yum方式安装nginx+mariadb+php-fpm 1.安装lnmp环境 安装epel源 yum install -y epel-release 安装 MySQL + PH ...