python-字典方法(dict)知识整理
#!/usr/bin/env python# -*- coding:utf-8 -*-# __author__:anxu.qi# Date:2018/11/30 info = { 'stu1101': "TengLan Wu", 'stu1102': "LongZe Luola", "stu1103": "XiaoZe Maliya",}
############################ 字典 dict ##################################
key-value 键值对的数据的集合可变的、无序的、key不重复
字典是无序的字典的 key 是按照哈希来进行保存的,所以字典的key一定要能被哈希,被哈希就是不可变的。
注:字典的key不能是:列表,字典
字典的value 可以是任意值
# 字典的每一个元素,都是键值对, 而且是无序的user_info = { "Kname":"Vsidaodeng", "Kage":"V30", "Kgender":"Vmiss"}## 索引# print(user_info['age'])# 30 ## 切片没有 自定定义:两种方式都可以,推荐使用第一种
字典定义 dict 定义 初始化 d = dict() 或者 d = {} dict(**kwargs) 使用 name=value 初始化一个字典 dict(iterable,**kwarg) 使用可迭代对象和name=value对 来构造字典 。 不过可迭代对象必须是一个二元结构。 d = dict(((1,'a'),(2,'b')) 或者 d = dict(([1,'a'],[2,'b']))
####################################### 多级字典的嵌套示例 ############################################# # key 尽量不要写中文,因为有时候编码不一致,取不出来值av_catalog = { "欧美":{ "www.youporn.com": ["很多免费的,世界最大的","质量一般"], "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"], "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"], "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"] }, "日韩":{ "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"] }, "大陆":{ "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"] }}av_catalog["大陆"]["1024"][1] = "可以再国内做镜像"print(av_catalog) # 打印所有的值 values()print(av_catalog.values()) # 打印所有的key keys()print(av_catalog.keys()) # 字典是无序的,是没有下标的,可以根据key来获取具体的值#################### 字典 查 #################################print(info)# {'stu1103': 'XiaoZe Maliya', 'stu1102': 'LongZe Luola', 'stu1101': 'TengLan Wu'}# 方式一:print(info["stu1101"]) # info 存在则不会报错,不存在就会报错 # 方式二: print(info.get("stu110113")) # get 有就返回该值,没有这个值就返回None# None# TengLan Wu # 方式三: inprint("stu1103" in info) # 等与 python2.x info.has_key("stu1103") #################### 字典 改 #################################info["stu1101"] = "武藤兰" # 存在直接替换print(info)# {'stu1102': 'LongZe Luola', 'stu1101': '武藤兰', 'stu1103': 'XiaoZe Maliya'} #################### 合并更新 update ####################################a = { 'stu01':"nginx", 'stu02':"mysql", 'stu03':'zabbix'}b = { 'stu01':"tami", 1:3, 2:5}a.update(b)print(a)# {'stu03': 'zabbix', 'stu02': 'mysql', 2: 5, 'stu01': 'tami', 1: 3}# 把b作为一个参数传为了update,把两个字典合并,如果a字典中有和b字典中相同的key,则覆盖a中的value# 如果没有这个kye那么,将b中的key和value都添加到a字典中 #################### 字典 增 ################################## info["stu1104"] = "CangJingkong" # 不存在则创建一条print(info)# {'stu1104': 'CangJingkong', 'stu1102': 'LongZe Luola', 'stu1101': '武藤兰', 'stu1103': 'XiaoZe Maliya'} # 创建一个新的值 ,去字典里能取到我就返回,如果取不到我就设置一个新的。av_catalog.setdefault("TaiWan", {"www.baiddu.com":[1, 2]}) #################### 字典 删 ################################### 方式一:del info["stu1101"]print(info)# {'stu1104': 'CangJingkong', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}# 方式二:info.pop("stu1102") # 删除指定的元素,并可以拿到结果print(info)# {'stu1103': 'XiaoZe Maliya', 'stu1104': 'CangJingkong'}# 方式三: 随机删除一个元素,并可以拿到结果info.popitem()print(info)# {'stu1103': 'XiaoZe Maliya'} c = { 'stu01': "tami", 1: 3, 2: 5}
# 只能等遍历时,收集好对应的key或者是value,再做处理
##################### for 循环 ################## 循环字典的key 和 value# 注:以下方式一和方式二的区别:结果都是一样的,但是方式一比方式二高效很多,# 因为方式一只是通过key,找到key和value,方式二是将字典转换为列表后,通过key,value找到对应的值# 数据量不大还可以,数据量大的情况下非常占用资源费时间。# 方式一:for i in a: print(i,a[i])# stu03 zabbix# stu01 nginx# stu02 mysql # 方式二:for k,v in a.items(): print(k,v)# stu03 zabbix# stu01 nginx# stu02 mysql
######################## keys ######################## 加上keys后,会输出所有的keyfor i in user_info.keys(): print(i)"""gendernameage """######################## values ######################## 加上values后,会输出所有的valuefor i in user_info.values(): print(i)"""VmissVsidaodengV30"""######################## items ######################## 加上items 后,会输出所有的itemfor k,v in user_info.items(): print(k,v)"""Kname VsidaodengKgender VmissKage V30"""########################################################## user_info = { "Kname":"Vsidaodeng", "Kage":"V30", "Kgender":"Vmiss"}# 获取字典的所有的keyprint(user_info.keys())# dict_keys(['age', 'gender', 'name']) # 获取字典的所有的值print(user_info.values())# dict_values([30, 'M', 'sidaodeng']) # 获取字典所有的键值对print(user_info.items())# dict_items([('age', 30), ('name', 'sidaodeng'), ('gender', 'M')]) ################################ del 删除 ################################################### 删除字典中的某个键值对user_info = { "Kname":"Vsidaodeng", "Kage":"V30", "Kgender":"Vmiss"}del user_info['Kage'] # 指定key,可以直接进行删除print(user_info,11110000000)# {'Kname': 'Vsidaodeng', 'Kgender': 'Vmiss'} 11110000000 ############################### clear 清空字典 ########################################### def clear(self): # real signature unknown; restored from __doc__# 清除所有内容user_info = { "Kname":"Vsidaodeng", "Kage":"V30", "Kgender":"Vmiss"}user_info.clear()print(user_info)# {} # 返回一个空字典 ############################### copy 浅复制 ########################################### def copy(self): # real signature unknown; restored from __doc__# 浅copy举例:
# ##################### 静态方法:fromkeys ###################### 初始化一个字典,并附一个临时的值,和浅copy 类似,只copy一层。d = dict.fromkeys([6,7,8]) #根据序列,创建字典
d = dict.fromkeys([6,7,8],[100])注:如果后面是引用类型,那么都是copy的门牌号
print(d)# {8: None, 6: None, 7: None} d = dict.fromkeys([6,7,8],"test")print(d)# {8: 'test', 6: 'test', 7: 'test'}d = dict.fromkeys([6,7,8],[1,{"name":"alex"},444])print(d)# {8: [1, {'name': 'alex'}, 444], 6: [1, {'name': 'alex'}, 444], 7: [1, {'name': 'alex'}, 444]}d[7][1]['name'] = "Jack wang"print(d)# {8: [1, {'name': 'Jack wang'}, 444], 6: [1, {'name': 'Jack wang'}, 444], 7: [1, {'name': 'Jack wang'}, 444]}
# ##################### get 方法 #####################根据key获取值,key不存在时,并制定默认值为None
def get(self, *args, **kwargs): # real signature unknown """ Return the value for key if key is in the dictionary, else default. """ pass
############################### get 获取值 ########################################### def get(self, k, d=None): # real signature unknown; restored from __doc__# 根据key获取值,如果key不存在,可以指定一个默认值。d是默认值user_info = { "Kname":"Vsidaodeng", "Kage":"V30", "Kgender":"Vmiss"}aa = user_info.get('Kname') # 如果有这个值,就会打印出来value值print(aa)# Vsidaodeng aa = user_info.get('Knameadasfad') # 如果没有这个kye,就会打印None,但是不会报错print(aa)# None # get 添加默认值aa = user_info.get('Kage','123') # 如果存在这个key,就会将对应的value打印出来print(aa,1111)# V30 1111aa = user_info.get('Kage111','123') # 如果没有aeg111这个key,那么就会给一个默认值123print(aa)# 123注:get是获取,不会改变原来的字典 # 通过索引也可以取,如果没有这个key,就会报错 # 所以,推荐使用,get("key") 来获取。 ############################### in 是否存在 ########################################### 是检查字典中否有对应的keyuser_info = { "Kname":"Vsidaodeng", "Kage":"V30", "Kgender":"Vmiss"}aaaa = 'Kname' in user_info.keys()print(aaaa)# True aaaa = 'Kname1231' in user_info.keys()print(aaaa)# False ############################### iteritems ########################################### def iteritems(self): # real signature unknown; restored from __doc__# 项可迭代user_info = { "Kname":"Vsidaodeng", "Kage":"V30", "Kgender":"Vmiss"}# 先不说,后期补充 ############################### pop 移除 ########################################### def pop(self, k, d=None): # real signature unknown; restored from __doc__# 获取某个key,并在字典中移除掉注:pop 出来的是一个value,不是k,v对。
user_info = { "Kname":"Vsidaodeng", "Kage":"V30", "Kgender":"Vmiss"}bb = user_info.pop('Kage')print(bb)# V30print(user_info)# {'Kgender': 'Vmiss', 'Kname': 'Vsidaodeng'} ################################ popitem 随机移除 ########################################### def popitem(self): # real signature unknown; restored from __doc__返回一个二元组 , 可以使用 k,v = d.popitem
# 获取并在字典中移除,随机移除。user_info = { "Kname":"Vsidaodeng", "Kage":"V30", "Kgender":"Vmiss"}bbbb = user_info.popitem()print(bbbb)"""('Kage', 'V30')('Kgender', 'Vmiss')('Kname', 'Vsidaodeng')""" ############################### setdefault 设置值 ########################################### def setdefault(self, k, d=None): # real signature unknown; restored from __doc__# 设置值,但是如果已经存在,则不设置,并获取当前key对应的值 如果不存在,会进行添加,并获取已经添加的值# 如果key不存在,则创建,如果存在,则返回已存在的值且不修改 user_info = { "Kname":"Vsidaodeng", "Kage":"V30", "Kgender":"Vmiss"} ############################### update 更新 ########################################### def update(self, E=None, **F): # known special case of dict.update# 批量更新
# 已经存在的更新掉,不存在的则添加方式二:user_info = { "Kname":"Vsidaodeng", "Kage":"V30", "Kgender":"Vmiss"} he = { "a":1, "b":2, "c":3}user_info.update(he)print(user_info)# {'b': 2, 'Kgender': 'Vmiss', 'Kage': 'V30', 'a': 1, 'c': 3, 'Kname': 'Vsidaodeng'}########################### update 添加 #############################################
he = { "a":1, "b":2, "c":3} # 方式一:he.update({"d":4}) print(he) # {'b': 2, 'c': 3, 'd': 4, 'a': 1} # 方式二: he["e"]=5# print(he)
# {'b': 2, 'c': 3, 'd': 4, 'a': 1}举例说明:
ttt = (11,22,["alex",{"k1":"v1"}]) ttt[2][1]["k2"] = "v2" # 方式一等同于下面的方式二
ttt[2][1].update({"k2":"v2"}) # 方式二
print(ttt)# (11, 22, ['alex', {'k2': 'v2', 'k1': 'v1'}])
字典dict 的key:
set 集合 的元素就可以看做key,set可以看做dict的简化版
hashable 可哈希才可以作为key,可以使用 hash() 测试
key 不允许重复
只要是将key用好了,就把字典用好了。
转载于:https://www.cnblogs.com/sidaofeng/p/9994796.html
python-字典方法(dict)知识整理相关推荐
- 第九章 python 字典(Dict)
第九章 python 字典(Dict) 9-1 字典基本操作 列表与元组是依序排列可称是序列数据结构,只要知道元素的特定位置,即可使用索引观念取得元素内容,这一章的重点是介绍了字典,它并不是依序排列的 ...
- 字典(DICT)知识大全
目录 一.定义 二.基础操作(增删改查) 三.字典的遍历 四.字典推导式 五.统计键值对数量 六.合并两个字典 七.清空字典 一.定义 你可以创建一个表示人的字典,然后想在其中存储多少信息就存储多少信 ...
- python 后端web框架知识整理
1.Django 创建项目的命令? django-admin startproject 项目名称 python manage.py startapp 应用 app 名 2.Django 创建项目后,项 ...
- Python 字典初始化dict()和{}
python字典初始化比较常用的两种方式:dict() 和 {} 性能方面,{}性能更好. 可以通过dist模块,查看两者的字节码: >>> import dis >>& ...
- Python字典(dict )的几种遍历方式
1.使用 for key in dict遍历字典 可以使用for key in dict遍历字典中所有的键 x = {'a': 'A', 'b': 'B'} for key in x:print(ke ...
- Python 字典(dict)操作(update)、翻转字典
0. 翻转字典(reverse_dict) word_index = imdb.get_word_index() reverse_word_index = dict([(index, word) fo ...
- Python爬虫_02_Python基础知识整理
一.Python 1.1 注释 1.1 注释介绍 在我们工作编码的过程中,如果一段代码的逻辑比较复杂,不是特别容易理解,可以适当的添加注释,以辅助自己 或者其他编码人员解读代码. 没注释的代码 有注释 ...
- Python字典(dict)与列表(list)与数组(nbarray)详解
目录 一.字典 声明字典 空字典声明方式 普通声明方式(key:value = 1:1) 在字典里加入新的键值对 字典格式 字典的遍历 普通循环遍历与输出对应key的value 以横向方式遍历每个ke ...
- python字典方法汇总_python字典的操作总结
1. 字典是无需的,唯一的,所以没有去重这一说 2.可以应用 if .... in\ont in .... 来判断字典是否有指定的KEY 3.字典的常用方法 删 del 语句 dict.clear() ...
- Python线程、进程知识整理
一.python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 #!/usr/bin/env python2 # -*- coding:utf-8 -*-3 im ...
最新文章
- velocity.js 动画插件
- python官网如何调中文-django的settings中设置中文支持的实现
- java 取得日期_java-如何从某个日期获取日期列表?
- canvas象棋 画图
- 拆解 | 某平台19元的儿童电话手表,究竟怎么做到的?
- Android 控件之RatingBar评分条
- 全栈深度学习第1期:如何启动一个机器学习项目?
- android 中手势GestureDetector 的使用
- 残差网络ResNet
- Java使用POI导入excel教程
- c语言32关键字详解pdf,C语言32个关键字.pdf
- Oracle动态性能视图学习之v$session_longops
- Windows XP/2000实现自动登陆(加入域和未加域两种情况)
- 时间换算--C语言结构练习
- rows between unbounded preceding and current row等,unbounded ,preceding ,following,current row含义详解
- 使用python3抓取链家二手房数据
- Java入门基本数据类型(羊驼)
- 阿里云注销备案流程及注销备案常见问题与解答
- 【数位板常见问题】压感笔为什么没有压感了
- 编写代码、打印图4-2所示的图形python_Python之turtle库画各种有趣的图及源码(更新中)_一个超会写Bug的程序猿的博客-CSDN博客...
热门文章
- 前端ajax怎么样遍历list_五大前端小白入门时最容易掉的坑,可得提防点!
- tensorflow 入门笔记(二)
- html5 Canvas 绘制基本图形 从直线图形到使用路径 - 直线、矩形、路径、多边形、复杂组合图形
- 人月神话贯彻执行_《人月神话》读后感与读书笔记
- c语言中队列的作用,循环队列的实现(C语言)
- Spark内核解析之七:核心组件解析
- mysql中mapping标签的作用_3种高效的Tags标签系统数据库设计方案分享
- 经验原石_经验分享:挑战翡翠原石,新手实战前应做哪些准备
- spring mvc 中自定义404页面在IE中无法显示favicon.ico问题的解决方法。
- 0112 - 借用纸币发行门票