python学习2之词典方法解析
2018-01-08 19:46
232 查看
1 创建词典 # dic2-5 最外层括号是构造方法,第二层是代表一个序列,最里层是每一个键值对
dic1 = {"name":"aa","age":13} dic2 = dict((("name","aa"),("age",13))) dic3 = dict((["name","aa"],["age",13])) dic4 = dict([("name","aa"),("age",13)]) dic5 = dict([["name","aa"],["age",13]]) print("dic1:",dic1) print("dic2:",dic2) print("dic3:",dic3) print("dic4:",dic4) print("dic5:",dic5)
2增
第一种新增方式
dic1 = {"name":"xiaoming","age":13} print(dic1) dic1["hobby"]="girl" print(dic1)
第二种方式
dic1 = {"name":"xiaoming","age":13} ret = dic1.setdefault("age",34)#有返回值 print(dic1)#原来词典有该键,则不修改词典内容 print(ret)#原来词典有该键,则不修改词典内容,并返回原词典的该键的值 ret = dic1.setdefault("address","beijing") print(dic1)#原来词典没有该键,新增该键值为词典内容 print(ret)#原来词典没有该键,新增该键值为词典内容,并返回新增的该键的值
3删
1 del dic[键]
dic1 = {"name":"xiaoming","age":13} del dic1["name"] print(dic1)
2 dic.clear()清空词典
dic1 = {"name":"xiaoming","age":13} dic1.clear() print(dic1)
3 dic.pop(键) 有返回值 ,返回删除的键值对的值
dic1 = {"name":"xiaoming","age":13} ret = dic1.pop("age") print(dic1,ret)
4 dic.popitem()随机删除 基本没有用处 有返回值是删除的键值对
dic1 = {"name":"xiaoming","age":13} ret = dic1.popitem()#返回值是删除的键值对 print(ret ,dic1)
4改
1根据键来修改
dic1 = {"name":"xiaoming","age":13} dic1["name"]="new_xiaoming" print(dic1["name"])
2 update(dic)
dic1 = {"name":"xiaoming","age":13} dic2 = {"ad":"beijing","confirm":"zhonghangzxin"} dic1.update(dic2)#会把dic2的内容更新到dic1,如果有相同的键值,dic1 的该值会被dic2 的覆盖 print(dic1)#没有相同建,不会覆盖,结果{"name":"xiaoming","age":13,"ad":"beijing","confirm":"zhonghangzxin"} dic3 = {"depart":"beijing","confirm":"zhonghangzxin"} dic1.update(dic3) print(dic1)#有相同建 覆盖{"name":"xiaoming","age":13,"ad":"beijing","confirm":"zhonghangzxin","depart":"beijing"}
5查
1 根据键来获取
dic1 = {"name":"xiaoming","age":13} a = dic1["name"] print(a)
2 根据 方法来获取
dic1 = {"name":"xiaoming","age":13} #keys() print(dic1.keys())#py3的新类型可以转换为list 获取所有的键 print(list(dic1.keys()))#转换为list类型 print(list(dic1.values()))#同上,获取所有的值 print(list(dic1.items()))#同上 ,获取所有的键值对
6其他内置方法
1 dict.fromKeys([],defalt)
也是创建词典的一种 []中全是键 ,defalt是默认值
dic1 = dict.fromkeys(["test1","test2","test3"],"hahahaha") print(dic1)#所有的值都被初始化为hahahaha dic2 = dict.fromkeys(["test1","test2","test3"],["hahahaha","hehehehe"]) print(dic2)#输出{'test3': ['hahahaha', 'hehehehe'], 'test1': ['hahahaha', 'hehehehe'], 'test2': ['hahahaha', 'hehehehe']} dic2["test1"][1] ="huhuhuhu" #虽然改的是test1的值的第二个元素,但是词典的所有的键的值对应都改了 print(dic2)#输出{'test3': ['hahahaha', 'huhuhuhu'], 'test1': ['hahahaha', 'huhuhuhu'], 'test2': ['hahahaha', 'huhuhuhu']},
2#sorted() 根据键排序可加参数
dic = {1:222,3:555,2:666} sorted(dic) print(dic)#{1: 222, 2: 666, 3: 555} dic = {1:222,3:555,2:666} print(sorted(dic.values()))#将值进行排序[222, 555, 666] print(sorted(dic.keys()))#将键进行排序[1, 2, 3] print(sorted(dic.items()))#按照键进行排序[(1, 222), (2, 666), (3, 555)]
3遍历
1 推荐使用,效率高
dic1 = {"name":"xiaoming","age":13} for i in dic1:#遍历的是键 print(i,dic1[i])#name xiaoming age 13
2 不推荐 效率低
dic1 = {"name":"xiaoming","age":13} for i in dic1.items():#遍历的是键 print(i)#('name', 'xiaoming') ('age', 13) for i,v in dic1.items():#遍历的是键 print(i,v)#name xiaoming age 13
4 dic.copy () 浅拷贝,父类不随被拷贝对象变化,子类随变化
dict1 = {'user':'runoob','num':[1,2,3]} dict2 = dict1 # 浅拷贝: 引用对象 dict3 = dict1.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用 # 修改 data 数据 dict1['user']='root' dict1['num'].remove(1) # 输出结果 print(dict1) print(dict2) print(dict3) #############输出结果################ {'user': 'root', 'num': [2, 3]}#没有问题 {'user': 'root', 'num': [2, 3]}#因为是引用,随dic1变化 {'user': 'runoob', 'num': [2, 3]}#相当于重新创建,一级元素不变,二级元素变化(浅拷贝) #####################################
5 radiansdict.get(key,default=None)返回指定键的值,如果值不在字典中返回default值
dic1 = {"name":"xiaoming","age":13} print(dic1.get("name",-1))#xiaoming print(dic1.get("nn",-1))#-1
6 key in dict如果键在字典dict里返回true,否则返回false
dic1 = {"name":"xiaoming","age":13} print("name" in dic1)#True
相关文章推荐
- 深入学习python解析并读取PDF文件内容的方法
- 深入学习Python解析并解密PDF文件内容的方法
- Python学习笔记之解析json的方法分析
- 【python爬虫专题】解析方法 <4> BeautifulSoup库学习
- 【python爬虫专题】解析方法 <3> 正则表达式学习
- python学习四:import模块方法、可变参数、字典key判断、版本信息获取、列表解析、
- 黄聪:Python+NLTK自然语言处理学习(二):常用方法(similar、common_contexts、generate)
- python的urllib模块,学习的部分有用方法
- python学习手册笔记--第14.20章--迭代器和解析
- 我的python学习之路----Python 3 抓取网页的 N 种方法
- Java解析XML文件的四种方法【学习】
- Python操作Sqlite正确实现方法解析
- python网络编程学习笔记(8):XML生成与解析(DOM、ElementTree)
- Python学习总结(二)----python的练习方法
- Python学习总结(二)----python的练习方法
- python网络编程学习笔记(7):HTML和XHTML解析(HTMLParser、BeautifulSoup)
- python 解析网页数据的几种方法简介
- jquery解析XML通用方法学习示例
- 前端攻城狮学习笔记三:实现一个URI解析方法,把url里#之后的参数解析成指定的数据结构。
- python django学习-问题记录及解决方法