一、字典

一、关键字: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七类之字典详解的更多相关文章

  1. Python包模块化调用方式详解

    Python包模块化调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一般来说,编程语言中,库.包.模块是同一种概念,是代码组织方式. Python中只有一种模块对象类型 ...

  2. Python中的高级数据结构详解

    这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...

  3. [转]使用python来操作redis用法详解

    转自:使用python来操作redis用法详解 class CommRedisBase(): def __init__(self): REDIS_CONF = {} connection_pool = ...

  4. Python API 操作Hadoop hdfs详解

    1:安装 由于是windows环境(linux其实也一样),只要有pip或者setup_install安装起来都是很方便的 >pip install hdfs 2:Client——创建集群连接 ...

  5. 对python3中pathlib库的Path类的使用详解

    原文连接   https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...

  6. Python中格式化format()方法详解

    Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参 ...

  7. python设计模式之装饰器详解(三)

    python的装饰器使用是python语言一个非常重要的部分,装饰器是程序设计模式中装饰模式的具体化,python提供了特殊的语法糖可以非常方便的实现装饰模式. 系列文章 python设计模式之单例模 ...

  8. Python调用windows下DLL详解

    Python调用windows下DLL详解 - ctypes库的使用 2014年09月05日 16:05:44 阅读数:6942 在python中某些时候需要C做效率上的补充,在实际应用中,需要做部分 ...

  9. Python操作redis字符串(String)详解 (三)

    # -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1.SET 命令用于设置 ...

随机推荐

  1. Dynamics CRM GBK编码

    Dynamics CRM用文本汉字为条件去请求数据时,传过去的竟然是GBK编码⊙_⊙ 下面这段代码解决了我的问题,这是拷贝自网上一位大神的博客: http://qq100002656.blog.163 ...

  2. python 02/100例

    题目 输入某年某月某日,判断这一天是这一年的第几天? 分析 例如:2018年6月19日 天数 = 19天 + 一月天数 + 2月天数 + ... + 6月天数 注意 闰年的2月是29天,如果年份是闰年 ...

  3. 在Centos 7上安装Docker

    在Centos 7上安装Docker 1.docker介绍 docker是类似于vmware的虚拟化软件,可以开发.容纳.运行应用程序的平台,在容器中安全的隔离运行应用程序. 2.Docker引擎 D ...

  4. 初识EMC

    EMC,即电磁兼容,是指设备在预期的电磁环境中,能按设计要求正常抵抗电磁干扰的能力.其主要包含3个方面:电磁干扰(EMI),电磁抗扰(EMS)与静电放电抗扰(ESD). 电磁干扰的方式可以大概分为传导 ...

  5. UESTC 574 High-level ancients

    分析: 无论父节点增加了多少,子节点的增量总比父节点多1. 这种差分的关系是保存不变的,我们可以一遍dfs根据结点深度得到在根结点的每个点的系数. 估且把一开始的结点深度称做c0吧,对于子树的修改就只 ...

  6. ubuntu安装完整版的vim

    apt-get remove vim-commonapt-get install vim

  7. P3393 逃离僵尸岛

    P3393 逃离僵尸岛 啊.好久不写dij手都生了 这道题就是预先处理出是否是危险城市,然后跑一个最短路就行了 然后因为我感觉这个对时间要求不大紧.判断危险城市时就写了个电风扇(DFS) 然后T飞了呜 ...

  8. 【洛谷P3389】(模板)高斯消元

    对于高斯消元法求解线性方程组, 我的理解就类似于我们在做数学题时的加减消元法, 只是把它写成一个通用的程序运算过程 对于一个线性方程组,我们从左往右每次将一列对应的行以下的元通过加减消元消去, 每个元 ...

  9. css块元素的 display 属性 inline-block 的应用

    <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> < ...

  10. javascript操作Date对象

    Date 对象用于处理日期和时间. 创建 Date 对象的语法: var myDate=new Date() Date 对象会自动把当前日期和时间保存为其初始值. 参数形式有以下5种: new Dat ...