#字典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. app接入网易严选:webview注入js的几个坑

    消费贷款app"一刻千金"接入网易严选总结 主要任务列表 隐藏相关元素 商品列表页跳转事件绑定 获取商品信息(skuid比较复杂) 隐藏元素 这部分没什么好讲的,使用原生js的do ...

  2. Drools文档(八) 规则语言参考

    规则语言参考 概述 Drools有一个"本地"的规则语言.这种格式在标点符号上非常轻,并且通过"扩展器"支持自然语言和领域特定的语言,使语言能够变形到您的问题领 ...

  3. 十一、VueJs 填坑日记之使用Amaze ui调整列表和内容页面

    上一篇博文我们整合了Amaze ui,并且调整了一个头部header和底部footer文件,其实做起来也很简单,只要按照步骤来做,完全没有问题.今天我们来重新调整一下列表页面和内容页面,使我们做的后台 ...

  4. 《Android源码设计模式》学习笔记之ImageLoader

    微信公众号:CodingAndroid cnblog:http://www.cnblogs.com/angel88/ CSDN:http://blog.csdn.net/xinpengfei521 需 ...

  5. 【架构篇】OCP和依赖注入

    描述 本篇文章主要讲解 : (1)OO设计OCP原则: (2)依赖注入引入 (3)依赖注入分析 (4)依赖注入种类 1   内容区 1.1   IOC背景 (1)Ralph E. Johnson &a ...

  6. python_day06(ip代理池)

    from urllib.request import Request, ProxyHandler from urllib.request import build_opener from bs4 im ...

  7. VMware中克隆虚拟机出现eth0改变为eth1情况

    解决如下: 查看复制虚拟机网卡信息如下: root@jcfx-2 ~]# ifconfig eth1 Link encap:Ethernet HWaddr 00:0C:29:CC:32:63 inet ...

  8. POJ 2828 Buy Tickets 线段树 倒序插入 节点空位预留(思路巧妙)

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 19725   Accepted: 9756 Desc ...

  9. centos7 无法启动网络(service network restart)错误解决办法

    centos7 无法启动网络(service network restart)错误解决办法: (以下方法均为网上COPY,同时感谢原博主分享) systemctl status network.ser ...

  10. UWP 调用outlook邮箱反馈

    public static async Task FeedbackAsync(string address, string subject, string body) { if (address == ...