一、

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沉淀之路--字典的更多相关文章

  1. 十五、python沉淀之路--eval()的用法

    一.eval函数 python eval() 函数的功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法:eval(source[, globals[, locals]]) -> v ...

  2. Python成长之路 — 字典

    一.字典的定义与创建 字典是Python中唯一内建的映射类型.你可以将其想象成书本的目录,章节名称代表"key",页码则代表"value".书本的目录本质上是也 ...

  3. 十六、python沉淀之路--迭代器

    一.迭代器 1.什么是迭代器协议:对象必须提供一个next方法,执行该方法要返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前走). 2.可迭代对象:实 ...

  4. 七、python沉淀之路--集合

    一. 1.字符串转集合 s = 'hello' se = set(s) print(se) {'e', 'o', 'h', 'l'} 2.列表转集合 l1 = ['hello','python','n ...

  5. 六、python沉淀之路--int str list tuple dict 重点总结

    一.数字int(..)二.字符串replace/find/join/strip/startswith/split/upper/lower/formattempalte = "i am {na ...

  6. 十八、python沉淀之路--生成器

    一.生成器 生成器总结:语法上和函数类似:生成器函数和常规函数几乎是一样的.他们都是使用def语句进行定义,差别在于生成器使用yield语句返回一个值,而常规函数使用return语句返回一个值.自动实 ...

  7. 十二、python沉淀之路--内置函数

    1.abs函数,求绝对值. a = abs(-3) print(a) 返回:3 2.all函数:判断是否是可迭代对象. 官方解释:Return True if bool(x) is True for ...

  8. 九、python沉淀之路--递归、全局变量、局部变量、作用域

    一.递归 1.递归函数,同时使用嵌套,并且是将别的函数作用于调用函数里面 例1 num = [1,2,3,4,5] def add_one(i): return i+1 def reduce(i): ...

  9. 二、python沉淀之路~~字符串属性(str)

    1.capitalize的用法:即将输出字符串首字母大写 test = "heLLo" v = test.capitalize() print(v) 结果:Hello. 2.cas ...

随机推荐

  1. Windows虚拟机安装Linux系统

    windows系统安装linux centos虚拟系统 1.下载 VMware Workstation Pro并安装,效果如图 2.下载linux系统 https://www.centos.org/d ...

  2. public,protected,privat区别

    关于从基类继承来的方法和属性的保护: --class Pig:public Animal {...} C++不仅允许你对在类里定义的方法和属性实施访问控制,还允许你控制子类可以访问基类里的哪些方法和属 ...

  3. 写给后端程序员的HTTP缓存原理介绍--怎样决定一个资源的Cache-Control策略呢

    通过Internet获取资源既缓慢,成本又高.为此,Http协议里包含了控制缓存的部分,以使Http客户端可以缓存和重用以前获 取的资源,从而优化性能,提升体验.虽然Http中关于缓存控制的部分,随着 ...

  4. mini2440移植uboot 2014.04(七)

    上一篇博文:<mini2440移植uboot 2014.04(六)> 代码已经上传到github上: https://github.com/qiaoyuguo/u-boot-2014.04 ...

  5. MySQL数据库基本操作(二)

    表结构操作 ( ALTER TABLE) 添加单列: ALTER TABLE tb1_name ADD [COLUNM] col_name column_definition [FIRST|AFTER ...

  6. linux环境下的python安装过程(含setuptools)

    这里我不想采用诸如ubuntu下的apt-get install方式进行python的安装,而是在linux下采用源码包的方式进行python的安装. 一.下载python源码包 打开ubuntu下的 ...

  7. Android中设置自己软件的铃声+震动

    有时候一些通讯软件需要这些个功能,比如说收到短信,通知等,要求手机发出铃声,或震动,或发光以提示用户知晓. 往往手机都是有默认设置的,比如说用户开启了铃声+震动:只铃声不震动:完全静音等等... 这个 ...

  8. thinkphp URL 模式

    兼容ThinkPHP三种url模式的nginx rewrite location / { root /var/www; index index.html index.htm index.php; if ...

  9. different between web api and web service

     https://stackoverflow.com/questions/19336347/what-is-the-difference-between-a-web-api-and-a-web-ser ...

  10. JAVA8新特性——接口定义增强

    JAVA9都要出来了,JAVA8新特性都没搞清楚,是不是有点掉队哦~ 接口定义增强 在JDK1.8以前,接口是定义的: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法 ...