字典的魔法
dict
创建一个字典
info = { "k1": "v1", "k2":"v2" }
字典value
info = { "k1":18, "k2":True, "k3":[ 11, 22, 33, { 'kk1':'vv1', 'kk2':'vv2', 'kk3':'vv3' } ] } print(info) --- {'k3': [11, 22, 33, {'kk3': 'vv3', 'kk1': 'vv1', 'kk2': 'vv2'}], 'k2': True, 'k1': 18}
布尔值为key时,如果有数字1或0为key时,可能会重复,key需要是唯一的。
info = { 1:'asdf', "hehe":"asdf", True:"123" } print(info) --- {1: '123', 'hehe': 'asdf'}
要点
- 数字允许为key
- 列表不能做为字典的key
- 字典也不能做为字典的key
- 字典是无序的。
- 字典可以循环,默认循环所有的key
字典取值
v = info["k1"] print(v) --- 18
通过索引的方式找到指定的值。
v = info["k3"][3]["kk3"][0] print(v) --- 11
删除键值对
del info['k1'] print(info) --- {'k2': True, 'k3': [1, 22, 33, {'kk2': 'vv2', 'kk3': [11, 22, 33], 'kk1': 'vv1'}]} del info['k3'][3]['kk1'] print(info) --- {'k1': 18, 'k3': [1, 22, 33, {'kk2': 'vv2', 'kk3': [11, 22, 33]}], 'k2': True}
找出所有的key
for item in info.keys(): #不使用keys()方法默认循环所有key print(item,info(item)) --- k1 k3 k2
找出所有的values
for item in info.values(): print(item) --- True 18 [1, 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': [11, 22, 33]}]
同时取出key,values------> items()方法
for k,v in info.items(): print(k,v) --- k3 [1, 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': [11, 22, 33]}] k1 18 k2 True
字典中的方法
def items() def values() def items() def update() def clear() def copy() def fromkeys() def get() def pop() def popitem()
根据序列创建字典,并指定统一的值---fromkeys
dic = { "k1":"v1" } v = dict.fromkeys(["k1",123,"999"],123) print(v) --- {123: 123, 'k1': 123, '999': 123}
根据key获取值,key不存在时,可以指定默认值,默认值不存在是返回None
dic = { "k1":"v1" } v = dic.get('k1') print(v) --- v1 # 当要取的key在字典中没有时不会报错,返回None v = dic.get('kkk',1111) print(v) --- 1111
删除key,并获取值 pop
dic = { "k1":"v1", "k2":"v2" } dic.pop('k1') print(dic) --- {'k2': 'v2'} v = dic.pop('k1') print(dic,v) --- {'k2': 'v2'} v1 # pop后可以加默认值,当值不存在时可以返回默认值 v = dic.pop('k1',90) ··· #### 设置默认值 setdefault
v = dic.setdefault('k3','12') #当值key值存在时,不改变,不存在加上
print(dic,v)
{'k3': '12', 'k1': 'v1', 'k2': 'v2'} 12
#### 更新
dic = {
"k1":"v1", "k2":"v2"
}
v = dic.update({'k1':'1111','k3':123})
print(dic,v)
{'k3': 123, 'k1': '1111', 'k2': 'v2'} None
第二种写法
dic.update(k1=123,k3=123,k4="asdf") #python默认转换为字典
## 总结 #### 1.数字 int(...) #### 2.字符串
replace/find/join/strip/startswith/split/upper/lower/format
template = "i am {name}, age: {age}"
v = template.format(name='alex',age=19)
v = template.format(**{"name": 'alex', 'age': 19)
print(v)
#### 3.列表
append/extend/insert
索引、切片、循环
#### 4.元组 忽略 索引、切片、循环,以及元素不能被修改删除等 #### 5.字典
get / update / keys / values / items
for 索引
v = "k1" in dic.values()
print(v)
False
#### 6.布尔值
0 1
bool(...)
False------> None "" "{}" "[]" "()" 0
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
关于多线程的几道面试小题
1.自定义类MyThread继承Thread类,为什么要重写run()方法? 自定义类中不是所有的代码都需要被线程执行。而这个时候,为了区分哪些代码能够被线程执行,java提供了Thread类中的run()方法,用来包含那些需要被线程执行的代码。注意:这里的 被线程执行 = 开一个新线程执行 2.run()和start()的区别?run():仅仅是封装被线程执行的代码,直接调用就是普通方法。start():首先启动了线程,然后再由jvm去调用该线程的run()方法。 3.线程能不能多次启动start()? 不能,一个线程不能被多次启动。线程被多次启动会抛出异常:IllegalThreadStateException:非法的线程状态异常 示例代码如下: 1 package cn.itcast_02; 2 3 /* 4 * 该自定义的类为什么要重写run()方法? 5 * 自定义类中不是所有的代码都需要被线程执行。 6 * 而这个时候,为了区分哪些代码能够被线程执行,java提供了Thread类中的run()方法,用来包含那些需要被线程执行的代码。 7 * 8 * 注意:这里的 被线程执行...
- 下一篇
初学Python—列表和元组
一、什么是列表 列表是一系列数据的集合 二、列表的引用 首先定义一个列表 1 names=["alex","bob","alice","jim"] View Code 列表引用: name[0] name[1] print(name[3]) View Code 三、列表操作 1.查询列表元素 ①利用下标输出列表元素 print(names[0]) #输出列表第一个元素 print(names[0:5]) #输出列表前五个元素(顾头不顾尾) print(names[-1]) #输出列表最后一个元素 print(names[-4:-1])#输出列表倒数第四个至倒数第二个元素的值(顾头不顾尾) print(names[-3:0])#输出列表最后三个元素print(nemas[::3]) #从第一个元素开始,每三个元素输出一个(隔两个元素输出一个元素) ②查找元素所在位置:index方法 print(names.index("alex")) #查找元素“alex”的下标,输出为0 ③统计相同元素的个数:count方法 print(names.count("alex")) #输出“alex”元素...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度