一、字典  dict

info = {"k1" : "v1", "k2" : "v2"}

以键值对形式组成字典

字典里的value可以是任何值

列表不能作为字典的key

字典可以作为字典的key

元组可以作为字典的key

布尔值可以作为字典的key  但是重复的key只会显示一个,True容易和数字1重复,需注意!

字典是无序的

字典支持索引取值,但不支持切片

info = {
"k1": 18,
2 : True,
"k3": [
"li",
[],
(),
22,
33,
{
"kk1": "vv1", "kk2": "vv2", "kk3": (11, 22)
}
],
"k4": (11, 22, 33, 44)
}
v = info["k1"]
print(v)

info = {
"k1": 18,
2 : True,
"k3": [
"li",
[],
(),
22,
33,
{
"kk1": "vv1", "kk2": "vv2", "kk3": (11, 22)
}
],
"k4": (11, 22, 33, 44)
}
v = info["k3"][5]["kk3"][0]
print(v)

注意:通过索引key值去找value的话,如果该key不存在,会报错。

支持del删除

del info['k1']

支持for 循环

1.输出所有keys

info = {"k1": "v1", "k2": "v2"}
for item in info.keys():
print(item)

2.输出所有values值

info = {"k1": "v1", "k2": "v2"}
for item in info.values():
print(item)

3. 同时输出keys和values:

info = {"k1": "v1", "k2": "v2"}
for item in info.keys():
print(item, info[item])

或(这个更重要)items 方法

info = {"k1": "v1", "k2": "v2"}
for k, v in info.items():
print(k, v)

  

二、字典的魔法

1. 该方法和前面相同不再赘述:clear  copy (浅拷贝)

2. 根据序列(可以是列表、元组、字符串等),创建字典,并指定统一的值

v = dict.fromkeys(["k1", 123, "999"], "爱你")
print(v)

3. get方法,如果传入的key不存在,默认返回None,也可以指定返回值

dic = {"k1": "v1"}
v = dic.get("k1")
v2 = dic.get("大白", "不存在")
print(v, v2)

4. pop删除,当要删除的key不存在时,返回指定内容

dic = {"k1": "v1",
"k2": "v2"
}
v1 = dic.pop("k1")
v2 = dic.pop("k3", "不存在哦亲")
print(dic)
print(v1)
print(v2)

5. 随机删除一个,返回被删除的键和值

dic = {"k1": "v1",
"k2": "v2"
}
v = dic.popitem()
print(dic, v)

dic = {"k1": "v1",
"k2": "v2"
}
k, v = dic.popitem()
print(dic, k, v)

6.设置值,如果已经存在,不设置,获取当前key对应的值

如果不存在,设置,获取当前key对应的值

dic = {"k1": "v1",
"k2": "v2"
}
v = dic.setdefault("大白", "123")
v2 = dic.setdefault("k1", "11111111")
print(dic, v)
print(dic, v2)

7. 更新字典

dic = {"k1": "v1",
"k2": "v2"
}
dic.update({"k1": "11111", "k3": "liu"})
print(dic)

或者

dic = {"k1": "v1",
"k2": "v2"
}
dic.update(k1=123, k3 = 345)
print(dic)

重要:keys()  values()  items()  get  update

补充:

in dic 默认找的是key

in dic.values() 能找到values

dic = {"k1": "v1",
"k2": "v2"
}
v = "k1" in dic
v2 = "v1" in dic.values()
print(v)
print(v2)

布尔值:在内存中就表现为0和1

转换:bool(...)

以下情况为假:None   ""   ()   []   {}  0   ====>False

python课堂整理6---字典的更多相关文章

  1. python课堂整理19----迭代器和生成器

    一.概念 • 迭代器协议: 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个stopIteration异常,以终止迭代(只能往后走,不能往前退) • 协议是一种约定,pyt ...

  2. python课堂整理18---文件操作(下)

    一.b模式,字节方式(二进制的单位),rb wb ab f = open('test.py', 'rb', encoding = 'utf-8') 报错,因为用了b模式,就不能再指定编码格式了,已经指 ...

  3. python课堂整理16---内置函数

    1. abs :求绝对值 print(abs(-1)) 2. all()传入一个可迭代对象,对该对象进行bool值运算,若都为True 就返回True,有一个为假,就返回False print(all ...

  4. python课堂整理15---map, filter,reduce函数

    一.map函数 处理序列(可迭代对象)中的每一个元素,得到的结果是一个‘列表’(其实是个迭代器),该‘列表’元素个数及位置与原来一样 理解下面这段代码: num_l = [1, 2, 4, 6] de ...

  5. python课堂整理10---局部变量与全局变量

    一.局部变量与全局变量 1. 没有缩进,顶头写的变量为全局变量 2. 在子程序里定义的变量为局部变量 3. 只有函数能把变量私有化 name = 'lhf' #全局变量 def change_name ...

  6. python课堂整理9---函数1

    函数 一. 函数就是为了完成某一个特定的功能 形式参数不占运行空间,只有传入实参后才占,用完立刻释放空间. 函数一遇到 return 就结束掉了 函数名() :运行函数,有返回值的话用变量承接 def ...

  7. python课堂整理8---字符串格式化

    一.字符串格式化(% 和 format) 1. % s  主要接收字符串类型,也可以接收任意类型 tp1 = "i am %s my hobby is alex" % 'lhf' ...

  8. python课堂整理7---集合

    前面小节: sep 用来控制每个元素间的间隔符号 print("alex", "dabai", "liu", sep = "&qu ...

  9. python课堂整理4---列表的魔法

    一.list   类, 列表 li = [1, 12, 9, "age", ["大白", "小黑"], "alex"] ...

随机推荐

  1. springboot部署到tomcat

    把spring-boot项目按照平常的web项目一样发布到tomcat容器下 多点经验: 1.保证运行环境的jdk和开发环境一致,不然class文件无法被编译 2.保证tomcat和java的版本匹配 ...

  2. 第五章 .net core该怎么玩

    项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...

  3. JCS学习记录 --Java Caching System

    Java Caching System--JCS 缓存工具 //jcs版本 jcs-1.3.jar //jcs--cache.ccf缓存配置文件 cache.ccf //所依赖的jar包concurr ...

  4. Appium+python自动化(十二)- Android UIAutomator终极定位凶“胸”器(七)(超详解)

    简介 乍眼一看,小伙伴们觉得这部分其实在异性兄弟那里就做过介绍和分享了,其实不然,上次介绍和分享的大哥是uiautomatorviewer,是一款定位工具.今天介绍的是一个java库,提供执行自动化测 ...

  5. javaweb中Servlet配置到Tomcat

    1.tomcat容器来运行Servlet程序 在javase中,都是在控制台中运行java代码,而且提供了一个main方法,代码运行的入口.在javaee中,想要运行java代码,不是通过控制台程序来 ...

  6. hdoj2037 贪心算法——今年暑假不AC

    所谓“贪心算法”是指:在对问题求解时,总是作出在当前看来是最好的选择.也就是说,不从整体上加以考虑,它所作出的仅仅是在某种意义上的局部最优解(是否是全局最优,需要证明). 经典问题:时间序列问题   ...

  7. git常用总结

    git 基本配置 安装git yum -y install git git全局配置 git config --global user.name "lsc" #配置git使用用户 g ...

  8. 分析了16年的福利彩票记录,原来可以用Python这么买彩票

    目录 0 引言 1 环境 2 需求分析 3 代码实现 4 后记 0 引言 上周被一则新闻震惊到了,<2454万元大奖无人认领!福彩史上第二大弃奖在广东中山产生 >,在2019年5月2日开奖 ...

  9. golang开发:类库篇(二) Redis连接池的使用

    为什么要使用连接池 一个数据库服务器只拥有有限的连接资源,一旦所有的连接资源都在使用,那么其它需要连接的资源就只能等待释放连接资源.所以,在连接资源有限的情况下,提高单位时间的连接的使用效率,缩短连接 ...

  10. LightOJ 1422:Halloween Costumes(区间DP入门)

    http://lightoj.com/volume_showproblem.php?problem=1422 题意:去参加派对,有n场派对,每场派对要穿第wi种衣服,可以选择外面套一件,也可以选择脱掉 ...