python基础知识三 字典-dict + 菜中菜
3.7字典:dict+菜中菜
1.简介
无序,可修改,用于存储数据,大量,比列表快,将数据和数据之间关联
定义:dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
逗号分割的是一个元素,'cx'(键):10(值) -- 键值对
字典的键:要使用不可变数据类型(可哈希)。要求键唯一,如果有重复的,后面的会将前面的覆盖。
可哈希的 -- 不可变的数据类型 - 避免哈希冲突使用了开放寻址法
不可哈希的 -- 可变的数据类型
字典的值可以任意。
2.字典的使用
1.增:
- 直增:dict1['li'] = 89
- dict1.setdefault('liw',100)#此方法按键去查字典是否有对应的键值对,如果没有,执行添加,如果有,则不添加,有返回值,原字典有,则返回值,没有返回None
dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
#1
dict1['li'] = 89
print(dict1)
#2
print(dict1.setdefault('liw'))
dict1.setdefault('liw',100)
print(dict1.setdefault('liw',100))
print(dict1)
2.删:
del dict1['cx'] :通过查找字典的键删除键值对,如果没有会报错。
dict1.pop('cx'):通过字典的键删除键值对,返回被删除值
dict1.clear():清空
dict1 = {'cx':10,'liwenhu':80,'zhangyu':50,'wu':20}
#1
del dict1['cx']
print(dict1)
#2
dict1.pop('wu')
print(dict1.pop('wu'))
print(dict1)
#3
dict1.clear()
print(dict1)
3.改:
dict1['cx'] = 'dsb' 通过键,如果原字典中没有此键对应的键值对,就是添加,如果有,就是修改
dict1.update(dict2) :update括号中的字典级别高于前边的字典(括号中放的是要跟新的字典)
dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
#2
dict2.update(dict1)
print(dict2)
4.查:
for 循环,获取的是键。
dict1.get('cx') :通过键获取值,如果没有会返回None
dict1['cx'] :通过键获取值,如果没有会报错。
dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
#1
for i in dict1:
print(i)
#2
print(dict1.get('cx'))
#3
print(dict1['cx'])
5.字典的嵌套:
dic = {1001:["周杰伦","林俊杰"],
1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},
1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},
1004:{"韦小宝":[{"教主夫人":["教主"]},
{"阿珂":"刺客"},
{"双儿":"天地会"},
{"爱心觉罗建宁":"公主"},
{"独臂神尼":{"韦小宝师父":{"兰陵王":"隐身"},"花木兰":[
"唧唧复唧唧","木兰是战士",{"爸爸":["花和尚"]}]
}},
{"陈圆圆":"丈母娘"},{"穆建平":"小郡主"}]},
1005:{"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]}
}
# print(dic)
# print(dic[1004]["韦小宝"][0]["教主夫人"][0])
# print(dic[1005]["常鑫"][-1])
# print(dic[1002]["汪峰"]["前妻2"][-1])
# print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])
# print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])
3.菜中菜:
1.高仿列表:
- dict1.keys():获取字典中所有的键
- dict1.vlaues():获取字典中所有的值
- dict1.items():获取字典中所有的键和值(键值对)
2.解构:
解构示意图:
a = 10
b = 12
a,b = b,a

dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
#1.键值对输出
for i in dict1:
print(i,dict1.get(i))
print(dict1.keys())#2.高仿列表 ,支持for循环,不支持索引-- 结果:ict_keys([True, 'zhangyu', 'cx', 'liwenhu'])
for i in dict1.keys():
print(i)
#print(dict1.keys()[0])
#3.dict1.values(),获取所有的值(可以转列表)
print(dict1.values())
print(list(dict1.values()))
#4.dict1.items():获取键值对
for i in dict1.items():
print(i)
##解构
for i,j in dict1.items():#解构输出键值对
print(i,j)
#5.解构。
a,b = 10 ,12
print(a)
print(b)
a = 10
b = 12
a,b = b,a
print(a)
print(b)
a,b = [1,2]
print(a,b)
a,_,b = (3.4.5)#'_'无用,只为将不要的4赋值进去
print(a,b)#等号后边的值与前边的变量数要一致
a = 10,12
print(a)#a是一个元组
a,b ={'1':'a','2':b}
print(a,b)#取到的是键
python基础知识三 字典-dict + 菜中菜的更多相关文章
- Python基础知识(五)------字典
Python基础知识(四)------字典 字典 一丶什么是字典 dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 键: 必须是可哈希,(不可变的数据类型 ...
- Python基础知识(三)
Python基础知识(三) 一丶整型 #二进制转成十进制的方法 # 128 64 32 16 8 4 2 1 1 1 1 1 1 1 例如数字5 : 101 #十进制转成二进制的方法 递归除取余数,从 ...
- Python基础之 一 字典(dict)
字典:是一种key - value的数据类型.语法:info = { key:value }特性:无序,key必须唯一(所以天生去重) 方法如下:del dict[key]:删除字典指定键len(di ...
- python基础知识(字典)
创建字典 变量名 = {key:value,.....} zip() 转换为zip对象 空字典 变量名 = {} 变量名 = dict(key = value,....) 创建只有键的字典 fr ...
- Python基础知识:字典
1.字典中键-值为一对,keys()返回一个列表,包含字典中所有键,values()返回所有值 favorite_languages ={ 'jack':"python", 'al ...
- python 基础知识4 - 字典
1.字典增 #字典增 dic = {'name': '大白', 'age': 20} dic['hight'] = 180 #没有键值对,添加 dic['age'] = 18 #有键值对,覆盖 pri ...
- python基础知识三
在考虑它们的运算时,一定要想到python是一门面向对象语言,它对类型的要求是不那么严格的,因为在完全面向对象的语言中,一切都是对象. 那么让我们重新 考虑+ - * /等操作,不再拘泥于传统的数 ...
- python学习笔记(二)python基础知识(list,tuple,dict,set)
1. list\tuple\dict\set d={} l=[] t=() s=set() print(type(l)) print(type(d)) print(type(t)) print(typ ...
- python基础知识三——try与except处理异常语句
try/except介绍 与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错(python作为脚本语言没有编译的环节,在执行过程中对 ...
随机推荐
- MySql5.7.11 for Windows 安装(二)
原文:MySql5.7.11 for Windows 安装(二) 安装之后,首先创建data文件夹(旧版本本来就有),管理员打开cmd,cd到bin文件夹,输入 mysqld –initialize- ...
- 在VS如何查看汇编代码
由于最近不常用,结果导致今天用的时候忘记了,╮(╯▽╰)╭.现在标记一下: 方法如下,先创建一个C++ Project,然后加入上面的代码,在main函数或者其他地方设置断点,注意是Debug版本,否 ...
- springboot中加分布式redis锁
分布式redis锁,spring-boot-starter-data-redis,RedisTemplate 公司聊天的聊天系统,近期出现多个客服并发接待同一个客户的记录,经排查,是由于代码加的同步锁 ...
- 实现h5公众号分享功能(vue项目也适用)
在vue项目中我们先npm install weixin-js-sdk --save下载下来在main.js文件中引入 import wx from 'weixin-js-sdk';//引入 Vue. ...
- 【设计模式】结构型04桥接模式(Bridge Pattern)
学习地址:http://www.runoob.com/design-pattern/bridge-pattern.html 桥接模式(Bridge Pattern) 桥接模式(Bridge patte ...
- memecached存放session数据
memcached存放session 1.session数据需要频繁调用. 2.session数据不需要永久性的保存在服务端. 3.在集群中,可以将session存放在memcached中或者是在数据 ...
- React躬行记(6)——事件
React在原生事件的基础上,重新设计了一套跨浏览器的合成事件(SyntheticEvent),在事件传播.注册方式.事件对象等多个方面都做了特别的处理. 一.注册事件 合成事件采用声明式的注册方式, ...
- 从Spring的几个阶段理解其工作过程
Spring框架非常强大,想要彻底弄懂Spring是非常困难的. 为了便于了解Spring的工作原理,我们来研究一下,Spring是怎么加载的,Spring会经过几个阶段. 我们站在Javaweb ...
- SpringBoot系列——Logback日志,输出到文件以及实时输出到web页面
前言 SpringBoot对所有内部日志使用通用日志记录,但保留底层日志实现.为Java Util Logging.Log4J2和Logback提供了默认配置.在不同的情况下,日志记录器都预先配置为使 ...
- SPOJ INTSUB - Interesting Subset(数学)
http://www.spoj.com/problems/INTSUB/en/ 题意:给定一个集合,该集合由1,2,3....2n组成,n是一个整数.问该集合中有趣子集的数目,答案mod1e9+7. ...