3.7字典:dict+菜中菜

1.简介

​ 无序,可修改,用于存储数据,大量,比列表快,将数据和数据之间关联

​ 定义:dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}

逗号分割的是一个元素,'cx'(键):10(值) -- 键值对

字典的键:要使用不可变数据类型(可哈希)。要求键唯一,如果有重复的,后面的会将前面的覆盖。

​ 可哈希的 -- 不可变的数据类型 - 避免哈希冲突使用了开放寻址法

​ 不可哈希的 -- 可变的数据类型

字典的值可以任意。

2.字典的使用

1.增:
  1. 直增:dict1['li'] = 89
  2. 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.删:
  1. del dict1['cx'] :通过查找字典的键删除键值对,如果没有会报错。

  2. dict1.pop('cx'):通过字典的键删除键值对,返回被删除值

  3. 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.改:
  1. dict1['cx'] = 'dsb' 通过键,如果原字典中没有此键对应的键值对,就是添加,如果有,就是修改

  2. dict1.update(dict2) :update括号中的字典级别高于前边的字典(括号中放的是要跟新的字典)

    dict1 = {'cx':10,'liwenhu':80,'zhangyu':50}
    #2
    dict2.update(dict1)
    print(dict2)
4.查:
  1. for 循环,获取的是键。

  2. dict1.get('cx') :通过键获取值,如果没有会返回None

  3. 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.高仿列表:
  1. dict1.keys():获取字典中所有的键
  2. dict1.vlaues():获取字典中所有的值
  3. 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 + 菜中菜的更多相关文章

  1. Python基础知识(五)------字典

    Python基础知识(四)------字典 字典 一丶什么是字典 ​ dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ​ 键: 必须是可哈希,(不可变的数据类型 ...

  2. Python基础知识(三)

    Python基础知识(三) 一丶整型 #二进制转成十进制的方法 # 128 64 32 16 8 4 2 1 1 1 1 1 1 1 例如数字5 : 101 #十进制转成二进制的方法 递归除取余数,从 ...

  3. Python基础之 一 字典(dict)

    字典:是一种key - value的数据类型.语法:info = { key:value }特性:无序,key必须唯一(所以天生去重) 方法如下:del dict[key]:删除字典指定键len(di ...

  4. python基础知识(字典)

    创建字典 变量名 = {key:value,.....} zip()    转换为zip对象 空字典 变量名 = {} 变量名 = dict(key = value,....) 创建只有键的字典 fr ...

  5. Python基础知识:字典

    1.字典中键-值为一对,keys()返回一个列表,包含字典中所有键,values()返回所有值 favorite_languages ={ 'jack':"python", 'al ...

  6. python 基础知识4 - 字典

    1.字典增 #字典增 dic = {'name': '大白', 'age': 20} dic['hight'] = 180 #没有键值对,添加 dic['age'] = 18 #有键值对,覆盖 pri ...

  7. python基础知识三

    在考虑它们的运算时,一定要想到python是一门面向对象语言,它对类型的要求是不那么严格的,因为在完全面向对象的语言中,一切都是对象. 那么让我们重新 考虑+ -  *  /等操作,不再拘泥于传统的数 ...

  8. 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 ...

  9. python基础知识三——try与except处理异常语句

    try/except介绍 与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错(python作为脚本语言没有编译的环节,在执行过程中对 ...

随机推荐

  1. UWP中的消息提示框(二)

    在UWP中的消息提示框(一)中介绍了一些常见的需要用户主动去干涉的一些消息提示框,接下来打算聊聊不需要用户主动去干涉的一些消息提示框.效果就是像双击退出的那种提示框. 先说说比较简单的吧,通过系统To ...

  2. QQ邮箱打败163邮箱的过程(重视用户体验的结果)

    引用 楼主 CKAOS 的回复: 目前负责一个项目,ASP.NET的,做一个网盘系统,别的都弄好了,只差一个下载文件夹的功能未实现,只能在服务器端打包成压缩文件,再发回浏览器.如何直接下载文件夹,不是 ...

  3. MFC OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别

    OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别,如果没有注意这个问题就会出现无厘头式的绘图问题-- 效果就是出不来!在经过 ...

  4. AngularJS 1.4对动画系统进行了彻底的重构

    分享 <关于我> 分享  [中文纪录片]互联网时代                 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...

  5. Cocos2d-x 3.X Qt MinGW版本编译运行

    自Cocos2d-x 3.X引入了C++ 11特性,在Windows平台上的支持就仅限VS 2012,其实还可以尝试MinGW版本,GitHub上有MinGW版本的Qt Creator工程. 地址:h ...

  6. CMake编译Qt程序+UI+Resources

    今天给大家讲解一下Cmake如何编译Qt程序. 这里说的Qt程序不只是用QtCreator写出来的程序,当然也可以是文本编辑器….这里说的Qt程序是指,QCoreApplication,QApplic ...

  7. Markdown教程<2> mermaid图形绘制(1)

    Markdown教程<2> mermaid图形绘制(1) 博客园中的markdown编辑器同时支持mermaid图表引擎与tex公式引擎,可以使用mermaid直接画出流程图,时序图,甘特 ...

  8. ABP开发框架前后端开发系列---(12)配置模块的管理

    一般来说,一个系统或多或少都会涉及到一些系统参数或者用户信息的配置,而ABP框架也提供了一套配置信息的管理模块,ABP框架的配置信息,必须提前定义好配置的各项内容,然后才能在系统中初始化或者通过接口查 ...

  9. maven_nexus私服搭建

    搭建很简单,但是新版本运行方式有所区别,于此记录一下: 1.下载程序包:http://www.sonatype.org/nexus/downloads/ 官网比较慢,下了一小时.期间在csdn花了一积 ...

  10. 阿里云ECS发送企业邮件

    <?phpuse PHPMailer\PHPMailer\PHPMailer;require '../vendor/autoload.php'; $mail = new PHPMailer(tr ...