字典的定义和操作 (Python)
字典是由key and value 构成,无序结构(不想列表那样有固体位置);
note:key 是唯一的,没有重复;
字典可以多级嵌套;
定义:
dict1 = { # 由等式构成 dict = { “key” : "value,....}
"sid170" : "hbb", # :不能写成“=” ; 结束要有 “,”.
'sid171' : "zheng",
'tid' : { # 嵌套 "key1" : {"key" : "value"}
"tid01" : "wang",
'tid02' : "deng"
} # 总体而言需要注意:1)何时用等号,何时用冒号;2)记得加逗号
}
操作:单级的操作
info = {
# "sid1701" = "hbb", #错误的书写方式:将:写成=
"sid170" : "hbb",
'sid171' : "zhang",
'sid172' : "tian"
}
print(info) # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian'}
# add
# info ["sid173"] : "新来的" # 错误:等号 写成 冒号 # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian'}
# info 'sid177' = 'sunwukong' # 错误:[] 写成 “ ”
info ["sid173"] = "新来的" # 感觉不好记呀 # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'sid173': '新来的'}
print(info
# revise
info ["sid170"] = 'HBB' # 表达方式和新增相同,只是将旧的内容换掉 #{'sid170': 'HBB', 'sid171': 'zhang', 'sid172': 'tian', 'sid173': '新来的'}
print(info)
# delete
info.pop ("sid173") # 标准删除(建议这个) # {'sid170': 'HBB', 'sid171': 'zhang', 'sid172': 'tian'}
print(info)
del info ["sid172"] # 也能删除,感觉不好就 # {'sid170': 'HBB', 'sid171': 'zhang', 'sid173': '新来的'}
print(info)
info.popitem() # 随机删除一个 # {'sid170': 'HBB'}
print(info)
info ["sid177"] = '孙悟空'
info ['sid178'] = '白骨精' # 上面的东西太少了,再添加两个
print(info)
# find someone
print('sid178' in info) # 标准用法 (是否在其中) # True
print('sid172' in info) # False
print(info.get('sid177')) # 导出信息 # 孙悟空
print(info["sid178"]) # 导出信息 # 白骨精
# print(info["sid179"]) # 没有的话显示出错 # KeyError: 'sid179'
print(info.keys()) # 输出 keys # dict_keys(['sid170', 'sid177', 'sid178'])
print(info.values()) # 输出 valuse # dict_values(['HBB', '孙悟空', '白骨精'])
操作:多级简单操作
info = {
"sid170" : "hbb",
'sid171' : "zhang",
'tid' : {
"tid01" : "wang",
"tid02" : "deng"
}
} # define
print(info)
# add one
info ["sid173"] = 'bao'
print(info)
# add more
info_3 = {
"nid" : {
"nid01" : "li",
'nid02' : "jie"
}
}
# info.update(info_3) # style 1
info.setdefault("sid",{"sid01":"li",'sid02':"zhang"}) # style 2
print(info) # difference bigger 两种方式不同之处:1)表达的不同;2)作用的不同。具体下面
# revise
info ["tid"]['tid01'] = "zhong" # 逐层去找,然后更改
print(info)
# delete
del info ["tid"]["tid02"] # 逐层去找,然后删除
print(info)
del info ["sid"] # 删除一个层
print(info)
# info.pop(["tid"]["tid01"]) # can't use
# find
print(info.get("tid"))
# print(info.get(["tid"]["tid01"])) # can't use
print('tid' in info) # True
# print('tid01' in info) # False # can't use
操作3:多级复杂操作
info = {
"sid170" : "hbb",
'sid171' : "zhang",
'sid172' : "tian",
'tid' : {
"tid01" : "wang",
"tid02" : "deng"
}
} # 首先定义一个嵌套列表
print(info) # keys output # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'tid': {'tid01': 'wang', 'tid02': 'deng'}}
print(info.keys()) # values output # dict_keys(['sid170', 'sid171', 'sid172', 'tid'])
print(info.values()) # dict_values(['hbb', 'zhang', 'tian', {'tid01': 'wang', 'tid02': 'deng'}])
info.setdefault( "did" ,{"did01":'zhou','did02':'li'}) # 新加一个嵌套关系,若原来没有就增加进去 # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'tid': {'tid01': 'wang', 'tid02': 'deng'}, 'did': {'did01': 'zhou', 'did02': 'li'}}
info.setdefault( "tid" ,{"did01":'zhou','did02':'li'}) # 如果原来有,不做任何修(前一行代码加*运行) #{'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'tid': {'tid01': 'wang', 'tid02': 'deng'}
print(info)
info_2 = {
"tid01" : "gu",
"tid03" : "zhuan",
} # 定义一个新的字典
print(info) # 旧结果字典 # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'tid': {'tid01': 'wang', 'tid02': 'deng'}, 'did': {'did01': 'zhou', 'did02': 'li'}}
print(info_2) # 新字典结果 # {'tid01': 'gu', 'tid03': 'zhuan'}
info.update(info_2) # 将新字典同步到旧字典 # {'sid170': 'hbb', 'sid171': 'zhang', 'sid172': 'tian', 'tid': {'tid01': 'wang', 'tid02': 'deng'}, 'did': {'did01': 'zhou', 'did02': 'li'}, 'tid01': 'gu', 'tid03': 'zhuan'}
print(info) # 没有的新增进去;已经有的不同的,更新掉(注意与setdefault的不同)
# 写法不同;意义不同
print(info_2.items()) # 将字典的结果,按照列表输出。 # dict_items([('tid01', 'gu'), ('tid03', 'zhuan')])
总结1: 操作类型一:
# style 1 of operation.
info ['sid174'] = "bao" info ['sid171'] = "jian" del info ['sid170'] print('sid171' in info)
总结2 操作类型二:dict.XXXX
info.pop("sid172")
print(info)
info.popitem()
print(info)
print(info.get("sid171"))
print(info.keys())
print(info.values())
info.setdefault( "tid" ,{"did01":'zhou','did02':'li'})
print(info)
info.update()
print(info.items())
类型比较繁杂:
单级词典;多级词典。单机操作的情况,有的还不能用于多级(可能是我操作失误,请指教)。
不同类型的操作。
最后的循环:
for i in info:
print(i)
print("---------line---------")
print(i,info [i]) '''sid170
---------line---------
sid170 hbb
sid171
---------line---------
sid171 zheng
tid
---------line---------
tid {'tid01': 'wang', 'tid02': 'deng'}'''
需要慢慢消化呀。。。。
字典的定义和操作 (Python)的更多相关文章
- python的字典数据类型及常用操作
字典的定义与特性 字典是Python语言中唯一的映射类型. 定义:{key1: value1, key2: value2} 1.键与值用冒号“:”分开: 2.项与项用逗号“,”分开: 特性: 1.ke ...
- Javascript Jquery 中的数组定义与操作_子木玲_新浪博客
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- sh_09_字典的定义
sh_09_字典的定义 # 字典是一个无序的数据集合,使用print函数输出字典时,通常 # 输出的顺序和定义的顺序是不一致的! xiaoming = {"name": " ...
- Python 高级网络操作 - Python Advanced Network Operations
Python 高级网络操作 - Python Advanced Network Operations Half Open Socket, 一个单向的 socket 被称为 half open sock ...
- 定义制造业操作(定义 MES/MOM 系统)
定义制造业操作(定义 MES/MOM 系统) 制造业操作包含众多工厂级活动,涉及设备(定义.使用.时间表和维护).材料(识别.属性.位置和状态).人员(资格.可用性和时间表),以及这些资源与包含其信息 ...
- Python自动化开发 - 字符串, 列表, 元组, 字典和和文件操作
一.字符串 特性:字符串本身不可修改,除非字符串变量重新赋值.Python3中所有字符串都是Unicode字符串,支持中文. >>> name = "Jonathan&q ...
- Python 字典Dict概念和操作
# 字典概念:无序的, 可变的键值对集合 # 定义 # 方式1 # {key: value, key: value...} # 例如 # {"name": "xin&qu ...
- Python元组类型、字典类型及常用操作
一.元组类型 1.用途 记录多个值,当多个值没有改的需求,此时用元组更合适,Python的元组与列表类似,不同之处在于元组的元素不能修改. 2.定义方式 在()内用逗号分隔开多个任意类型的值 t=(1 ...
- 跟着ALEX 学python day2 基础2 模块 数据类型 运算符 列表 元组 字典 字符串的常用操作
声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/ 模块初始: Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相 ...
随机推荐
- javascript基础-HTML5
跨文档消息(Web Messaging cross-document messaging) 原理 往有关联(同一框架/弹出)的文档传递数据. Message Channel在javascript基础- ...
- maven 修改默认的JDK版本
maven jdk 版本配置 maven 默认使用的 jdk 版本 新建一个 maven 项目,如下 : 项目左下方出现一个感叹号,JRE 显示的是 1.5 版本.解决方式有两种,一种是配置 pom. ...
- 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解
注意:这里不会讲到nginx流媒体模块如何安装的问题,只研究rtmp,hls直播和录制相关的nginx服务器配置文件的详细用法和说明.可以对照这些命令详解配置nginx -rtmp服务 一.nginx ...
- [Lucene]-Lucene基本概述以及简单实例
一.Lucene基本介绍: 基本信息:Lucene 是 Apache 软件基金会的一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎.Luc ...
- 借用mysql 或者其他数据库 处理MSSQL 2016前处理导入特殊字符
MSSQL 2016支持了utf8编码的文件,之前处理比较麻烦的bcp 方式导入特殊字符一下子就方便了. 但是之前的版本,处理起来还是有一点麻烦.这次处理使用的数据库版本是sql server 201 ...
- node.js零基础详细教程(7.5):mongo可视化工具webstorm插件、nodejs自动重启模块Node Supervisor(修改nodejs后不用再手动命令行启动服务了)
第七章 建议学习时间4小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- curl的使用
curl -v -0 -T 123.wav "127.0.0.1:80/saveSound?filename=18696770041_1379903830_xxx.wav&du ...
- maven 的docker插件
首先你得配置一个带有认证的docker私有仓库. 本机要安装maven和jdk vi pom.xml <plugin> <groupId>com.spotify</gro ...
- C#中的Dictionary的使用
在工作中有时候会用到Dictionary,由于自己之前没用过,参考了一下前人和先辈的实践,仿照着写了一个Test,第一次用还不是很熟练,要多实践练习才能用的得心应手,写代码重在敲键盘,以此为诫.(主要 ...
- 1.免费安装myeclipse 10以及破解
1.材料准备 jdk1.8.0_101 网盘地址链接: http://pan.baidu.com/s/1ge8Jaz5 密码: qb6v myeclipse-10.6-offline-installe ...