五、python沉淀之路--字典
一、
1、根据序列,创建字典,并指定统一的值
v = dict.fromkeys(["k1",1234,""],222)
print(v)
{'k1': 222, 1234: 222, '': 222}
2、根据key 获取值,key不存在时,报错;get方法,存在时返回对应值,不存在时返回后面代替值,不会报错 。
dic = {
"k1":'v1',
"k2":'v2'
}
v= dic.get('k3',1111)
print(v)
1111
3、pop:删除并返回值,如果不存在时,返回后面备用的值,不会报错
dic = {
"k1":'v1',
"k2":'v2'
}
v1 = dic.pop('k3',90)
print(dic,v1)
v = dic.pop('k1',90)
print(dic,v)
{'k1': 'v1', 'k2': 'v2'} 90
{'k2': 'v2'} v1
4、popitem的用法:同时删除键和值
dic = {
"k1":'v1',
"k2":'v2'
}
k,v = dic.popitem()
print(k,v,dic)
k2 v2 {'k1': 'v1'}
5、setdefault的用法
已存在,不设置,获取当前key对应的值
不存在,设置,获取当前key对应的值
dic = {
"k1":'v1',
"k2":'v2'
}
v = dic.setdefault('k111','')
print(dic,v)
v1 = dic.setdefault('k1','')
print(dic,v1)
{'k1': 'v1', 'k2': 'v2', 'k111': ''} 123
{'k1': 'v1', 'k2': 'v2', 'k111': ''} v1
6、update更新,有则更新,无则添加
dic = {
"k1":'v1',
"k2":'v2'
}
dic.update({"k1":'',"k2":'',"k3":''})
print(dic)
dic.update(k1=99,k2=88,)
print(dic)
{'k1': '', 'k2': '', 'k3': ''}
{'k1': 99, 'k2': 88, 'k3': ''}
7、 keys() values() items() get update
二、
1、基本结构:键值对
info = {
"k1": "v1", # 键值对
"k2": "v2"
}
2、字典的value可以值任意值。
info = {
"k1": 18,
"k2": True,
"k3": [
11,
[],
(),
22,
33,
{
'kk1': 'vv1',
'kk2': 'vv2',
'kk3': (11,22),
}
],
"k4": (11,22,33,44)
}
3、字典:无序。通过多打印几次就可以看到,每次顺序不一样
4、布尔值(1,0)【当key值中已经有0或1存在时】、列表、字典不能作为字典的key。
info ={
2: 'asdf',
"k1": 'asdf',
True: "",
# [11,22]: 123 列表可变,固不能作为key
(11,22): 123,
# {'k1':'v1'}: 123 字典可变,固不能作为key
}
5、字典可以通过索引key 键来找到对应的值
6、字典支持del的方式来删除,
dic = {
"k1":'v1',
"k2":'v2'
}
del dic["k1"]
print(dic)
{'k2': 'v2'}
7、字典支持for循环,配合一起用的有: .keys() .values() .items()
dic = {
"k1":'v1',
"k2":'v2',
"k3":'v3'
}
for item in dic:
print(item)
for i in dic.keys():
print(i)
for n in dic.values():
print(n)
for k,v in dic.items():
print(k,v)
k1
k2
k3
k1
k2
k3
v1
v2
v3
k1 v1
k2 v2
k3 v3
补充:
enumerate 的用法,以及与len range for 配合使用
- enumerate()是python的内置函数
- enumerate在字典上是枚举、列举的意思
- 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
- enumerate多用于在for循环中得到计数
li = ["我","要","测","试"]
for n in range(len(li)):
print(n) for index,item in enumerate(li):
print(index,item)
for index,item in enumerate(li,1):
print(index,item
0
1
2
3
0 我
1 要
2 测
3 试
1 我
2 要
3 测
4 试
五、python沉淀之路--字典的更多相关文章
- 十五、python沉淀之路--eval()的用法
一.eval函数 python eval() 函数的功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法:eval(source[, globals[, locals]]) -> v ...
- Python成长之路 — 字典
一.字典的定义与创建 字典是Python中唯一内建的映射类型.你可以将其想象成书本的目录,章节名称代表"key",页码则代表"value".书本的目录本质上是也 ...
- 十六、python沉淀之路--迭代器
一.迭代器 1.什么是迭代器协议:对象必须提供一个next方法,执行该方法要返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前走). 2.可迭代对象:实 ...
- 七、python沉淀之路--集合
一. 1.字符串转集合 s = 'hello' se = set(s) print(se) {'e', 'o', 'h', 'l'} 2.列表转集合 l1 = ['hello','python','n ...
- 六、python沉淀之路--int str list tuple dict 重点总结
一.数字int(..)二.字符串replace/find/join/strip/startswith/split/upper/lower/formattempalte = "i am {na ...
- 十八、python沉淀之路--生成器
一.生成器 生成器总结:语法上和函数类似:生成器函数和常规函数几乎是一样的.他们都是使用def语句进行定义,差别在于生成器使用yield语句返回一个值,而常规函数使用return语句返回一个值.自动实 ...
- 十二、python沉淀之路--内置函数
1.abs函数,求绝对值. a = abs(-3) print(a) 返回:3 2.all函数:判断是否是可迭代对象. 官方解释:Return True if bool(x) is True for ...
- 九、python沉淀之路--递归、全局变量、局部变量、作用域
一.递归 1.递归函数,同时使用嵌套,并且是将别的函数作用于调用函数里面 例1 num = [1,2,3,4,5] def add_one(i): return i+1 def reduce(i): ...
- 二、python沉淀之路~~字符串属性(str)
1.capitalize的用法:即将输出字符串首字母大写 test = "heLLo" v = test.capitalize() print(v) 结果:Hello. 2.cas ...
随机推荐
- 【CodeChef】Turbo Sort
题目链接:Turbo Sort 用java自带O(NlogN)的排序就可以,java要特别注意输入输出.输入用BufferedReader,输出用printWriter.printWriter的速度比 ...
- mybatis collection 一对多关联查询,单边分页的问题总结!
若想直接通过sql实现多级关联查询表结构得有2 个必不可少的字段:id ,parentId,levelId id:主键id, parentId:父id levelId:表示第几级(表本身关联查询的时候 ...
- OC_NSString、
8月17日NSString 一.字符串的创建 //1.创建常量字符串 NSString *str1 = @"hello world"; NSLog(@"%@", ...
- 2015 ACM/ICPC Asia Regional Changchun Online HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】
Elven Postman Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- C++中substr的用法
C++中substr函数的用法 #include<string> #include<iostream> using namespace std; void main() { s ...
- java格式化输出 printf 例子
import java.util.Date; public class Printf { public static void main(String[] args) { // %s表示输出字符串,也 ...
- 【P1886】滑动窗口(单调队列→线段树→LCT)
这个题很友好,我们可以分别进行简单难度,中等难度,恶心难度来做.然而智商没问题的话肯定是用单调队列来做... 板子题,直接裸的单调队列就能过. #include<iostream> #in ...
- 【转】meta标签中的http-equiv属性使用介绍
meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言, ...
- 阅读linux内核代码的工具-- Source Insight
http://blog.csdn.net/luckyaslan/article/details/7869235 Step 1:安装Source Insight并启动程序 可以进入图1界面,在工具条上有 ...
- js适配器模式
适配器模式,将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 系统的数据和行为都正确,但接口不符时,我们应该考虑用适配器,目的是使控制范 ...