-*- coding:utf-8 -*-
字典 键值对数据 dict dic = {'键':'值'}
存储数据 字典的查找快一些
不可哈希的,就是可变的数据 可变的数据不能哈希 不可变的数据能哈希

python3.6 版本以上 字典默认是有序的, 咱们怎么写的就怎么打印出来
但是 出去和别人说的时候,字典是无序的 3.5 测试

字典的键: 不可变数据类型 键不能重复,重复的话就会把值覆盖
字典的值: 可以随意
dic = {1:['邓','新','龙'],
2:'靖哥哥',
14:'张翔宁',
True:'我兜里',
(1,2):'草山',
'25':'黄蓉',
'你好':'试试'
}
print(dic['25']) # 通过键去查找值
print(dic[2]) # 通过键去查找值

增:

dic[11] = '小米'
print(dic)

dic.setdefault(11,'华为') # 17 键 华为 值
1.先去字典中通过11这个键去查有没有值 就是None
2.如果是值 就不进行添加
3.如果是None, 就添加 返回的是添加的值

print(dic)
print(dic.setdefault(17))

删:

del dic # 删除整个字典

del dic[1] # 通过键删除
print(dic)

print(dic.pop('25')) # pop 通过指定键删除 pop也有返回值, 返回的是被删除的值
print(dic)

dic.clear() # 清空
print(dic)

dic.popitem() # 随机删除 python3.6 删除最后一个 3.5 中随机删除
print(dic)

改:
dic1 = {'33':'jj','44':'TT'}
dic2 = {'33':'gg','66':'pp'}
dic1.update(dic2)

dic2.update(dic1)
更新 被更新的内容如果在 要更新的内容中那值就会被覆盖
两个字典中,都没有一样的就是合并
print(dic2)

dic1 = {'33':'jj','44':'TT'}
dic2 = {'33':'gg','66':'pp'}

dic2['33'] = 'tsp' #是字典中没有的时候才叫增,如果字典中这个键存在就叫做修改
print(dic2)

查:

dic2 = {'33':'gg','66':'pp'}

print(dic2[2]) # 通过键查找 如果键不存在就报错
print(dic2.get(2)) # 通过键查找 如果键不存在不会报错,返回None
print(dic2.setdefault('33')) # 不存在返回None

其他操作:

for i in dic2:
print(i)

for i in dic2:
print(dic2.get(i))

for i in dic2.keys():
print(i)

for i in dic2.values():
print(i)

for i in dic2.items():
print(i)

for i in dic2:
print(i,dic2[i])

print(dic2.keys()) # 高仿列表 dict_keys(['33', '66']) 不能使用下标
print(dic2.values()) # 高仿列表 dict_values(['gg', 'pp']) 不能使用下标

解构

a,b,c = 1,2,3 # 1,2,3 True,False,True '456' [7,8,9] (7,8,9) {'1':8,'2':9,'3':0}
print(a)
print(b)
print(c)

面试题:

a = 10
b = 20
a,b = b,a # 10000%
print(b) # 10
print(a) # 20

for k,v in dic2.items(): # k,v = ('33','gg')
print(k)
print(v)

keys() # 获取所有的键 高仿列表

values() # 获取所有的值 高仿列表

item() # 获取键值 以元祖的形式显示

补充:
dic2 = {'33':'gg','66':'pp'}
# ret = dic2.get('99','你傻啊,没有还要拿')
ret = dic2.pop('99','没有')
print(ret)

###############################这是坑##############################################
# dic3 = dict.fromkeys([1,2,3,4,5,6,7,8,9,0],[1,2,3])
# #第一个参数是键 要是可迭代的对象
# #第二个参数是值, 值是无所谓 是因为创建的新字典的值用的都是一个 值是一个可变数据类型
# print(dic3)
# dic3[3].append(9)
# print(dic3)

##################################################################################

字典的嵌套:

#dic = {'汪峰':{'光头强':'电锯',
'葛慧倩':'熊大',
'国际章':'熊二'},
'陈冠希':{'张柏芝':'喜剧之王',
'阿娇':'千机变'},
'韦小宝':{'建宁':'公主',
'龙儿':'教主夫人',
'双儿':{'大双':'榴莲','小双':'椰子'},
'阿珂':'刺客'}}
dic1 = dic['陈冠希']['阿娇']
print(dic1)
print(dic['韦小宝']['双儿'])
print(dic['韦小宝']['双儿']['小双'])

集合:

set 集合 存储数据 天然去重 无序 不能是用下标

se = {1,2,3,4,52,234,12,21,12,123,1,11,2,3,1,2,3,21} # 列表有点 没有值得字典
print(se)

面试题

lst = [1,2,3,4,12,3,4]
print(list(set(lst)))

for i in {1,2,3,4}:
# print(i)

se.add(6)

print(se)

se.update([1,23,34]) # 可迭代对象
print(se)

se.clear()
se = {1,2,3,4}
print(se.pop())

se.remove(4) # 通过内容删除
print(se)

s1 = {"刘能", "赵四", "皮歌藏"}
s2 = {"刘科长", "冯乡长", "皮歌藏"}

print(s1 & s2) # 俩个都有的
print(s1 | s2) # 两个合并
print(s1 - s2) # 不显示共有的
print(s1 ^ s2) # 显示不共有的

print(s1 < s2)
print(s1 > s2)

dic = {{1,2}:'你好'}
print(dic)

s1 = frozenset(['冯乡长', '刘能', '赵四', '刘科长'])
print(s1)

dic = {s1:'你好'}
print(dic)

print(dic.fromkeys('1','nihao'))

dic = {}
# dic.setdefault('123','nihao')
print(dic)

Python数据基本类型3的更多相关文章

  1. 4--Python入门--Python数据集合类型--集合

    在基础数据类型的基础上,Python有6中数据集合的类型: 列表list,最常用的数据类型,以[]为标识 元组tuple,和list很相似,但是不能二次赋值,用()标识 集合set,和list类似,但 ...

  2. 3--Python入门--Python数据集合类型--元组

    在基础数据类型的基础上,Python有6中数据集合的类型: 列表list,最常用的数据类型,以[]为标识 元组tuple,和list很相似,但是不能二次赋值,用()标识 集合set,和list类似,但 ...

  3. 2--Python入门--Python数据集合类型--列表

    在基础数据类型的基础上,Python有6中数据集合的类型: 列表list,最常用的数据类型,以[]为标识 元组tuple,和list很相似,但是不能二次赋值,用()标识 集合set,和list类似,但 ...

  4. Python数据基础类型-列表

    1,列表的创建 list1 = ['hello', 'world', 1997, 2000] list2 = [1, 2, 3, 4, 5 ] list3 = ["a", &quo ...

  5. 5--Python入门--Python数据集合类型--字典

    列表list,最常用的数据类型,以[]为标识 元组tuple,和list很相似,但是不能二次赋值,用()标识 集合set,和list类似,但是set中没有重复的元素,常用于集合间的运算,用{}标识 字 ...

  6. Python数据基础类型-新建列表

    1,遍历列表 遍历列表的所有元素,对每个元素执行相同的操作.可使用for循环 magicians = ['alice','david','carolina'] for magician in magi ...

  7. day13 Python数据基本类型

    算数运算 / x除以y // 取整除 %返回除法的余数 !=   不等于 <> 不等于 赋值运算 c+= a等价于c=c+a c-= a等价于c=c-a 逻辑运算 and or not 基 ...

  8. python小白——进阶之路——day3天-———容器类型数据+Number类型强制类型转换

    -->Number 部分 int :     整型   浮点型 布尔类型  纯数字字符串 float:    整型   浮点型 布尔类型  纯数字字符串 complex:  整型   浮点型 布 ...

  9. python语言 buffer类型数据的使用 'ascii' codec can't decode byte 0xe5 问题的解决

    在python中我们使用buffer类型时可以将其转换为str类型. 如果obejct的类型为<type 'buffer'> ,可以使用str(object)将其转换为字符串类型. 在转换 ...

随机推荐

  1. python学习笔记(4)数据类型-元组

    元组其实和列表一样,不一样的是,元组的值不能改变,一旦创建,就不能再改变了,比如说,要存数据库的连接信息,这个连接信息在程序运行中是不能被改变的,如果变了那数据库连不上了,就程序就完犊子了,这样的就可 ...

  2. yield解析

    1.yield可以用来为一个函数返回值塞数据 代码: def addlist(alist): for i in alist: alist = [, , , ] for x in addlist(ali ...

  3. perf4j @Profiled常用写法

    以下内容大部分摘抄自网络上信息. 1.默认写法 @Profiled 日志语句形如: 2009-09-07 14:37:23,734 [main] INFO org.perf4j.TimingLogge ...

  4. Doc: NetBeans

    NetBeans的最新版本已经更新为Apache NetBeans. 安装JDK 在Mac OS X下,有".dmg"的安装包,可以直接安装.只要JDK的版本大于1.8.0就可以安 ...

  5. 吴裕雄--天生自然python学习笔记:WEB数据抓取与分析

    Web 数据抓取技术具有非常巨大的应用需求及价值, 用 Python 在网页上收集数据,不仅抓取数据的操作简单, 而且其数据分析功能也十分强大. 通过 Python 的时lib 组件中的 urlpar ...

  6. 使用zxing生成和解析二维码

    二维码: 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的: 在代码编制上巧妙的利用构成计算机内部逻辑基础的0和1比特流的概念,使用若干个与二进制相对应的几何 ...

  7. 探究 "dependencies" vs "devDependencies"

    在之前学习发布npm库的时候,感觉才真正弄懂了--save-dev和-save之前的区别. –save 当我们开发一个npm模块的时候,如果使用--save 大专栏  探究 "depende ...

  8. OAuth 2.0学习笔记

    文章目录 OAuth的作用就是让"客户端"安全可控地获取"用户"的授权,与"服务商提供商"进行互动. OAuth在"客户端&quo ...

  9. CentOS7安装Ceph

    CentOS 7 下安装Ceph-nautilus 本问主要记录在CentOS 7下如何安装Ceph-nautilus,安装过程中遇到的一些问题及解决方法. 实验准备 以下是本次实验所用到的机器(采用 ...

  10. git push的完整形式

    现在的情况是,本地有两个分支:master.div, 远程仓库有一个分支:master,本地master分支和远程master分支建立有跟踪联系,这样本地master分支提交时直接git push(只 ...