python七类之字典详解
一、字典
一、关键字:dict
1.字典是唯一的键值对数据,其表现形式: dic = {键:值},字典里的键必须保证是唯一的
2.键必须是不可变的数据类型:
a、故列表是不能当键的
b、所以元组(内部没有可变的数据类型)是可以当键的.
c、而字典也不可以当字典的键的,因为字典是可变的.
3.值是没有要求的.
dic = {'Key':1,1:'True',False:'asdf',{1,2,3}:[1,2,3,4]}
注:len()是一个python的内置函数,查询数据类型的长度的。什么数据类型都可以用.
4.不可变数据类型:(可哈希)
数字 字符串 元组 布尔值
5.可变数据类型:(不可哈希)
列表 字典
注:字典是无序的,但是py36是有序打印的,3.5及以下版本是无序打印.
二、增加:
1.dic[' '] = ' ' #很暴力,直接添加就好了.#如果这个键不在字典中就是添加,在字典中就是修改
#增加:
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
dic['k4'] = 'v4'
dic['k3'] = 'v3'
dic.setdefault('k5')
print(dic)
2.dic.setdefault(' 键',' 值') #如果在列表中键存在就不进行添加,不存在进行添加.如果不写值就默认值为None
dic = {}
dic['歌手'] = '汪峰'
print(dic)
dic.setdefault('王菲','歌手')
print(dic)
dic.
三、删除:
注:字典中没有remove()方法 注意!!!!!!!!!!!!!!!!!
.pop(键) #删除这个键所对应的键值对,有返回值 #返回这个键所对应的值
.popitem() #随机删除,在3.6版本以上删除最后一个,3.5及以下版本随机删除有返回值 #返回的是这个键所对应的键值对,一元组的形式输出.第一个是键,第二个是值
del dic #删除整个字典
del dic['键'] #通过键删除一个键值对
.clear() #清空
注意(此处神坑):
#字典在for循环中是不能进行删除的,但是可以用方法规避在原字典使用for循环
dic = {'a':1,'b':2}
dic1 = {} #通过建立一个新的字典
for i in dic:
dic1[i] = dic[i] #规避for的循环机制
for i in dic1:
dic.pop(i)
print(dic)
四、改:
dic['键'] #如果这个键在字典中就是修改,不在就是添加
.update('键':'值') #更新 如果这个键在字典中就是修改,不在就是添加
五、查:
.get('键',返回值) #查询的是键所对应的值,如果没有该建,则默认返回None,返回值可以自己定义.
print(dic['键']) #也是查询键所对应的值,但是没有该键,则报错.
六、字典的其他操作:
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
for i in dic:
print(i) #遍历的是字典的键
if i in dic:
print(dic[i]) #没有返回值
print( dic.get(i)) #有返回值
七、字典独有的方法:
.keys() #对应字典的键 以元组的方式将键放在一个高仿列表里
.value() #对应字典的值 一元组方式将值放在一个高仿列表里
.items() #对应字典的键值对 以元组形式将键值对放在一个高仿列表里之所以叫高仿列表是因为无索引所以叫高仿
for k,v in dic.items(): #通过解构赋值
print('这是键',k)
print('这是值',v)
八、解构赋值:
a,b = 1,2 即将ab分别赋值1和2 ,位置对应即可。
1.数字:
a,b = 1,2 print(a,b)
结果:
1 2
2.元组:
a,b = ('你好','汪峰')
print(a,b)
结果:
你好 汪峰
3.列表:
a,b = ['你好','汪峰'] print(a,b)
结果:
你好 汪峰
4.字典:
a,b = {'汪峰':'男的','章子怡':'女的'}
print(a,b)
结果:
汪峰 章子怡
例: 用一行代码将ab的值调换 a=10 b=20
利用解构赋值即可:
a,b = b, a print(a,b)
这个解构赋值适用于数字,字符串,列表,元组,字典等数据类型
八、字典的嵌套:
dic1 = {
'name':['alex',2,3,5],
'job':'teacher',
'oldboy':{'alex':['python1','python2',100]}
}
dic1['name'].append('wusir')
print(dic1)
s = dic1['name'][0].title()
print(s)
dic1['oldboy']['alex'].remove('python2')
print(dic1)
字典是无序的可变可迭代的数据类型
python七类之字典详解的更多相关文章
- Python包模块化调用方式详解
Python包模块化调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一般来说,编程语言中,库.包.模块是同一种概念,是代码组织方式. Python中只有一种模块对象类型 ...
- Python中的高级数据结构详解
这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...
- [转]使用python来操作redis用法详解
转自:使用python来操作redis用法详解 class CommRedisBase(): def __init__(self): REDIS_CONF = {} connection_pool = ...
- Python API 操作Hadoop hdfs详解
1:安装 由于是windows环境(linux其实也一样),只要有pip或者setup_install安装起来都是很方便的 >pip install hdfs 2:Client——创建集群连接 ...
- 对python3中pathlib库的Path类的使用详解
原文连接 https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...
- Python中格式化format()方法详解
Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参 ...
- python设计模式之装饰器详解(三)
python的装饰器使用是python语言一个非常重要的部分,装饰器是程序设计模式中装饰模式的具体化,python提供了特殊的语法糖可以非常方便的实现装饰模式. 系列文章 python设计模式之单例模 ...
- Python调用windows下DLL详解
Python调用windows下DLL详解 - ctypes库的使用 2014年09月05日 16:05:44 阅读数:6942 在python中某些时候需要C做效率上的补充,在实际应用中,需要做部分 ...
- Python操作redis字符串(String)详解 (三)
# -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1.SET 命令用于设置 ...
随机推荐
- [转载]AMOLED结构详解,BOE专家给你分析驱动补偿
关键词: AMOLED, 驱动补偿 有机发光显示二极管(OLED)作为一种电流型发光器件已越来越多地被应用于高性能显示中.由于它自发光的特性,与LCD相比,AMOLED具有高对比度.超轻薄.可弯曲等诸 ...
- SQL转Linq工具的使用——Linqer
官方下载网站:http://www.sqltolinq.com/ 本文介绍版本为Linqer 4.5.7 第一步:下载下来,解压,双击安装.exe文件,运行界面如下. 第二步:建立与数据库的连接 点击 ...
- Wi-Fi
AP就是一个无线的交换机,提供无线信号发射接收的功能 Wi-Fi是一种可以将个人电脑.手持设备(如PDA.手机)等终端以无线方式互相连接的技术 两个不一样的东西,无法比较的 你说的应该是无线路由器和无 ...
- C++ cin不支持录入空格
如果在C++中,用cin>>str;这种方法来接收字符串那么录入的str不能包含空格,否则它会按照空格将整个字符串切分成若干段.如果你要是想输入带空格的字符串那就要用到getline()这 ...
- linux系统(CentOS)下安装PhantomJS
1.查看linux系统位数,来判断下载适配的PhantomJS: 输入命令:# lsb_release -a 2.下载PhantomJS: 从官网http://phantomjs.org/downlo ...
- CF549BLooksery Party题解
题目描述 The Looksery company, consisting of nn staff members, is planning another big party. Every empl ...
- 2018.9.16 Redis 边学习边总结
Redis 是一个使用 C 语言写成的,开源的 key-value 数据库..和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合) ...
- MVC学习二:Controller和View关系
控制器(Controller)主要是定义方法和加载视图(View) 1.控制器中的Action方法返回值的类型ActionResult,string 2.控制器中Action方法接收浏览器参数方式: ...
- Android学习笔记_31_通过后台代码生成View对象以及动态加载XML布局文件到LinearLayout
一.布局文件part.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...
- 【题解】洛谷P1006传纸条
链接 https://www.luogu.org/problemnew/show/P1006 日常牢骚 过年前最后一节课上完了坐标DP 也接触了一点区间DP(noi1995石子合并)下次做做看看吧 老 ...