#字典dict-------》唯一的映射类型

1、数据类型的划分

数据类型划分为可变数据类型和不可变数据类型。

不可变数据类型:tupe(元组)、bool、int、str           可哈希

可变数据类型:list、dict、set(集合)                 不可哈希

dict(key,value)中: key必须是不可变数据类型

          value可以是任意数据类型

2、dict的优点及特点

优点:用二分查找去查询。存储大量的关系型数据

特点:无序(3.5版本及之前的版本特点)

3、dict类型的增删改查

dic1 ={'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}

(1)增

1.dic['name'] = 值

    

dic1['high'] =185
print(dic1)

#结果为:{'sex': 'male', 'age': 18, 'name': 'jin', 'k': 'v', 'high': 185}

2、#setdefault
dic1.setdefault('weirht')#不写value的话,会默认为none
print(dic1)

#结果为:

{'sex': 'male', 'age': 18, 'k': 'v', 'weirht': None, 'name': 'jin'}

dic1.setdefault('weirht',150)
print(dic1)

#结果为:

{'weirht': 150, 'sex': 'male', 'name': 'jin', 'k': 'v', 'age': 18}

####如果增加的时候原来的dic有这个键值对,键值那么不做任何改变,没有才添加####

dic1内的元素会随机排列。

dic1 ={'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v','weirht':120}
dic1.setdefault('weirht',150)
print(dic1)
#{'k': 'v', 'weirht': 120, 'name': 'jin', 'sex': 'male', 'age': 18}

(2)删

1.pop

dic1.pop('age')
print(dic1)

#结果为:

{'k': 'v', 'weirht': 120, 'name': 'jin', 'sex': 'male'}

#pop在dict中有返回值,按键去删除
dic1 ={'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v','weirht':120}
dic1.pop('二哥','none')
print(dic1.pop('二哥','none'))
print(dic1)
#dic1.pop('二哥','没有此键/none') 可以自定义返回值。
#可设置返回值,按照键去删除,如果键在字典里没有,会报错。
2.popitem会随机删除。有返回值,返回的是元祖,删除的键值。
dic1 ={'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v','weirht':120}
dic1_pop1 = dic1.popitem()  # 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回
print(dic1_pop1)  #('age', 18)
 
3.clear
清空字典
dic_clear = dic.clear()  # 清空字典
print(dic,dic_clear)  # {} None
4.del
可以删除键值对,也可删除整个字典。没有返回值。如果没有会报错。
del dic1["name"]  # 没有返回值。
print(dic1)

(3)改

1、dic1['high'] =185,直接覆盖也叫做改
2、update
将一个字典中另一个字典没有的内容,覆盖添加到另一个字典中。
dic = {'name':'jin','age':18,'sex':'male'}
dic2 = {'name':'alex','weirht':75}
dic2.update(dic)
print(dic)
print(dic2)

dic:{'sex': 'male', 'name': 'jin', 'age': 18}
dic2:{'weirht': 75, 'sex': 'male', 'name': 'jin', 'age': 18}

(4)查

1.

print(dic1.keys())      什么也不写默认打印键
print(dic1.values())      打印值
print(dic1.items())     打印键值对
2.for                           结果:
for i in dic2:                                        weirht
print(i)                                         name

3.分别赋值

a,b = 1,2
print(a,b)
#a =1
  b =2

3.1  b =2用一行代码互换a,b的值(面试题)

a,b = 1,2

a,b = b ,a
print(a,b)

#a,b =[1,2]
#print(a,b)----->[1,2]

3.2

a,b = [1,2],[3,4]
print(a,b)
#------>[1,2],[3,4]
4.dic['name']
 
v1 =dic1['name']#找出了对应的值
print(v1)
#缺点如果没有对应的值会报错。

5.get

dic1.get('name1')
print(dic.get('name1'))#如果没有对应的值会默认返回none。
可以自定义设置返回值。
dic = {'name':'jin','age':18,'sex':'male'}
value2 = dic.get("djffdsafg","没有返回值")  # 没有,可以返回设定的返回值
print(value2)

(5)嵌套

dic={
'name':['alex','wusir','taibai'],
'py9':{
',
'learn_money':19800,
'address':'CBD'
}
'age':21
}
dic['age'] = 56
dic['name'].append('')

Python学习日记:day5-------dict字典的更多相关文章

  1. Python 学习日记(第三周)

    知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...

  2. Python学习记录day5

    title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...

  3. 【python学习笔记】4.字典:当索引不好用时

    [python学习笔记]4.字典:当索引不好用时 字典是python中唯一内建的map类型 创建: key可以为任何不可改变的类型,包括内置类型,或者元组,字符串 通过大括号: phonebook={ ...

  4. Python学习日记 --day2

    Python学习日记 --day2 1.格式化输出:% s d  (%为占位符 s为字符串类型 d为数字类型) name = input('请输入姓名') age = int(input('请输入年龄 ...

  5. python学习日记(基础数据类型及其方法01)

    数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...

  6. Python学习日记(三) 学习使用dict

    数据按类型可划分为: 不可变数据类型(可哈希):元祖.string.int.bool 可变数据类型(不可哈希):dict.list 集合本身是可变数据类型,元素是不可变数据类型 字典中的key必须是不 ...

  7. Python学习日记day3:数据类型

    1.数据类型int :如1.2.4等, 用于计算 bool: True , False ,用户判断 str: 储存少量数据,进行操作.如:'fdasklfjfladfl','而而噩噩','1234' ...

  8. Python学习日记(一):拜见小主——Python

    近日学习Python,特将学习过程及一点心得记录于此. 由于之前做过一个Java爬虫的项目,虽然很长时间没有碰过爬虫,但是小郭同学有一颗不死的爬虫心,哈哈.最近在互联网上找一些电影的时候,有很多电影只 ...

  9. Python基础数据类型(五) dict字典

    字典dict{} 字典数字自动排序 enumerate 枚举 for i,k in enumerate(dic,1) #第二个参数默认不写就是0 ---枚举 print(i,k) dict,以{}来表 ...

随机推荐

  1. keras 修仙笔记一

    对于牛逼的程序员,人家都喜欢叫他大神:因为大神很牛逼,人家需要一个小时完成的技术问题,他就20分钟就搞定.Keras框架是一个高度集成的框架,学好它,就犹如掌握一个法宝,可以呼风唤雨.所以学keras ...

  2. YOLO 算法框架的使用一(初级)

    YOLO官方框架使用C写的,性能杠杠的,YOLO算法,我就不做过多介绍了.先简单介绍一下这个框架如何使用.这里默认是yolo2,yolo1接近过时.环境 推荐ubuntu 或者centos YOLO是 ...

  3. webpack 3.X学习之Babel配置

    Babel是什么 Babel是一个编译JavaScript的平台,它的强大之处表现在可以通过编译帮你达到: 使用下一代的javascript(ES6,ES7,--)代码,即使当前浏览器没有完成支持: ...

  4. python语言 第一个程序

    print("hello word!") # for i in range(1, 10):# for j in range(1, 10):# print(j, "x&qu ...

  5. 分布式监控系统Zabbix3.2给异常添加邮件报警

    在前一篇 分布式监控系统Zabbix3.2跳坑指南 中已安装好服务端和客户端,此处客户端是被监控的服务器,可能有上百台服务器.监控的目的一个是可以查看历史状态,可以对比零晨和工作区间数据的对比,以便后 ...

  6. 简单使用Unity导航系统(小白之路)

    1.介绍 NavMesh:是一种根据场景中几何图像创建出来的3D网格.它会使导航和寻路变得很容易. 简单来说,NavMesh是一种我们在游戏世界中,可以让游戏角色在其表面行走并且导航的平面. 2.注意 ...

  7. 51nod 1020 逆序排列 DP

    在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数. 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序 ...

  8. svn 如果遇到an unversioned directory of the same name already exists的解决办法

    svn 如果遇到an unversioned directory of the same name already exists的解决办法 一般这种情况是因为,在一个已经存在的文件夹里做SVN che ...

  9. 利用nginx实现负载均衡和动静分离

    1.Nginx介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 . Nginx 是由 ...

  10. google guava cache缓存基本使用讲解

    代码地址:https://github.com/vikde/demo-guava-cache 一.简介 guava cache是google guava中的一个内存缓存模块,用于将数据缓存到JVM内存 ...