小学生都能学会的python(字典{ })

1. 什么是字典
dict. 以{}表示. 每一项用逗号隔开, 内部元素用key:value的形式来保存数据
{"jj":"林俊杰", "jay":"周杰伦"}

查询的效率非常高, 通过key来查找元素
内部使用key来计算一个内存地址(暂时),hash算法. key必须是不可变的数据类型(key 必须是可哈希的数据类型)
可哈希就是不可变

2. 字典的增删改查
1. 字典的新增:
dict[新key] = value
dict.setdefault()

# dic = {}
# # 徐峥:人在囧途
# dic['徐峥'] = "人在囧途" # 直接用key往里面存数据即可
# dic['黄渤'] = "疯狂的石头"
# dic["王宝强"] = "天下无贼"
# dic["王宝强"] = "士兵突击" # 如果key已经存在。 那么会替换掉原来的value, 修改
#
# dic.setdefault("黄秋生")
# dic.setdefault("黄秋生", "无间道") # 如果存在了key, 不会执行新增
#
# print(dic)

  

2. 删除
pop(key)
popitem()
clear()
del dict[key]

dic = {"黄日华": "天龙八部", "吕颂贤": "笑傲江湖", "苏有朋": "倚天屠龙记", "六小龄童": "西游记"}
# dic.pop("吕颂贤") # 指定key删除
# dic.popitem() # 随机删除
# del dic["黄日华"] # 删除
# dic.clear() # 清空字典 print(dic)

  

3. 修改
dic[key] = 新值
update()
4. 查询
1. 用key直接查询 dict[key]
2. get(key, 如果key不存在返回的数据)
3. setdefault() 1. 执行新增流程. 2. 查询结果
5. 操作
1. keys() 获取所有键 这个返回的不是列表, 很像列表
2. values()获取所有的值
3. items() 获取所有的键值对. 返回的是元组
解构, 直接把元组或者列表中的数据拿出来.
a, b, c = (a1, b1, c1) 必须一一对应

dic = {"刘能": "王小利", "赵四": "刘晓光", "王木生": "范伟", "谢大脚": "于月仙", "李大国": "小鬼"}
# dic['王木生'] = "刘伟"
dic2 = {"刘能": "大阳哥", "赵四": "github", "王木生": "汪峰", "谢大脚": "冯提莫", "王大拿": "金老板"}
dic.update(dic2)
print(dic) # 查询
dic = {'刘能': '大阳哥', '赵四': 'github', '王木生': '汪峰', '谢大脚': '冯提莫', '李大国': '小鬼', '王大拿': '金老板'}
# 1. 最直观。 直接用key
print(dic['周杰伦']) # 当这个key不存在的时候会报错
# 2. get方法
print(dic.get("谢大脚", "周杰伦不在这里")) # 没有key. 返回None
# 3. setdefault() 1. 新增(先看有没有key, 如果有就过, 如果没有,执行新增) 2.根据key把值返回
dic = {}
dic["盖伦"] = "德玛西亚之力"
value = dic.setdefault("菲奥娜", "无双剑姬") # 新增
value2 = dic.setdefault("盖伦", "刘伟") # 由于已经存在了key。 所以新增不执行。 直接查询结果
value3 = dic.setdefault("薇恩", "坑") print(value3)
print(dic)

  

6. 遍历字典
for key in dict:
dict[key]

for k, v in dict.items():
k , v

dic = {"汪峰": "大陆音乐半壁江山", "周杰伦": "亚洲音乐天王", "罗志祥": "亚洲舞王"}

# 对字典的遍历
# print(dic.keys()) # dict_keys(['汪峰', '周杰伦', '罗志祥']) 像列表但不是列表
# for key in dic.keys():
# print(key) # 拿到key
# print(dic[key]) # 拿到value # print(dic.values())
# for value in dic.values():
# print(value) # 也可以遍历字典
# [('汪峰', '大陆音乐半壁江山'), ('周杰伦', '亚洲音乐天王'), ('罗志祥', '亚洲舞王')]
# print(dic.items()) # 拿到的是key和value
for k, v in dic.items(): # 当需要遍历字典. 在操作中涉及到key和value的时候.
print(k) # 元组
print(v) # 字典本身是一个可迭代对象,可以直接进行for循环
for el in dic: # 直接拿到key
print(el)
print(dic[el]) # 前面的变量的个数和后面解包的个数一致
# a, b = (10, 20) # 解构, 解包
# print(a)
# print(b)

  

7. 字典嵌套.

wf = {
"name": "汪峰",
"age": 48,
"成名曲": "春天里",
"wife": {
"name": "章子怡",
"age": 39,
"工作": "演员"
},
"children":[
{"num": "001", "name": "汪一", "hobby": "唱歌"},
{"num": "002", "name": "汪二", "hobby": "演戏"} # wf['children'][1]['name']
]
} # wf['wife']['age'] = wf['wife']['age'] + 10
# print(wf)

  

小学生都能学会的python(字典{ })的更多相关文章

  1. 小学生都能学会的python(函数的进阶)

    小学生都能学会的python(函数的进阶) 1. 动态传参 形参: 1. 位置参数 2. 默认值参数 3. 动态传参 *args 动态接收位置参数 **kwargs 动态接收关键字参数 def fun ...

  2. 小学生都能学会的python(深浅拷贝)

    小学生都能学会的python(深浅拷贝) join() 把列表中的每一项用字符串拼接起来 # lst = ["汪峰", "吴君如", "李嘉欣&quo ...

  3. 小学生都能学会的python(编码 and 字符串)

    小学生都能学会的python(编码 and 字符串) 一,编码 最早的计算机编码是ASCII. 有英文+数字+特殊字符 8bit => 1byte 没有中文, 后面的编码必须兼容ASCII    ...

  4. 小学生都能学会的python(生成器)

    小学生都能学会的python(生成器) 1. 生成器 生成器的本质就是迭代器. 生成器由生成器函数来创建或者通过生成器表达式来创建 # def func(): # lst = [] # for i i ...

  5. 小学生都能学会的python(闭包和迭代器)

    小学生都能学会的python(闭包和迭代器) 1. 函数名第一类对象 函数名其实就是变量名 1). 可以像变量一样互相赋值. 2). 可以作为函数的参数,进行传递 3). 可以作为返回值返回 4). ...

  6. 小学生都能学会的python(函数)

    小学生都能学会的python(函数) 神马是函数 函数: 对功能或者动作的封装 函数的定义 def 函数名(形参列表): 函数体(return) ret = 函数名(实参列表) 函数的返回值 retu ...

  7. 小学生都能学会的python(文件操作)

    小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...

  8. 小学生都能学会的python(小数据池)

    小学生都能学会的python(小数据池) 1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 ...

  9. 小学生都能学会的python(列表[ ])

    小学生都能学会的python(列表[ ]) 1. 什么是列表(list) 能装东西的东西 列表中装的数据是没有限制的, 大小基本上是够用的 列表使用[]来表示. 在列表中每个元素与元素之间用逗号隔开 ...

随机推荐

  1. 关于excel导入、导出(POI)

    当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中, ...

  2. 操作服务器及MySQL数据库可以使其远程链接

    转自原文操作服务器及MySQL数据库可以使其远程链接 一般情况分三个地方准备,MySQL数据库,防火墙,还有你的服务器主机的准备 操作系统为centos6.5.其他系统大致差不多. 1:在服务器中安装 ...

  3. Routh-Hurwitz Criterion 劳斯稳定判据

    Routh-Hurwitz Criterion 为什么仅仅要有一个极点在右半平面,那么系统就不会稳定? 比如H(s) =( 1/(s+1) ) *  ( 1/(s+3) ) * ( 1/(s-2) ) ...

  4. 【手势交互】6. 微动VID

    中国 天津 http://www.sharpnow.com/ 微动VID是天津锋时互动科技有限公司开发的中国Leap Motion. 它能够识别并跟踪用户手部的姿态.包含:指尖和掌心的三维空间位置:手 ...

  5. iOS 使用脚本自动化复制target

    有些项目成熟以后,就会有需求自动化配置生成一个全新的项目,不需要再让开发人员手动修改工程文件,将配置化工作直接移交给运维或者配置团队去做 其实按照普通的做法,无非就是在xcode里将目标target ...

  6. 页面与后台传递中文乱码问题(java乱码)

    1.前台中文传递到后台乱码. 前台不须要处理, 系统一般都会默认把中文转化为ISO-8859-1类型. 仅仅需在后台接受数据是处理 Str为前台传过来的中文字符串: String inputer = ...

  7. 关于部门后端所有转向java前初步设想

    Java服务有些什么形式?眼下来看主要是下面几类: 1.  执行在Web应用server的Servlet 2.  Thrift.PB.Avro等相似框架写的java服务 3.  WebService( ...

  8. Nagios监控nginx服务具体过程

    1在nginx 服务器上安装nrpe客户端: Nginx的服务须要监控起来.不然万一down了而不及时修复,会影响web应用.例如以下web应用上面启动的nginx后台进程[root@lb-net-2 ...

  9. bzoj2806: [Ctsc2012]Cheat(SAM+DP)

    2806: [Ctsc2012]Cheat 题目:传送门 题解: 感觉这题考的更多的就是DP啊... 看完题目的第一反应就是广义SAM...(然而并不会) 再YY一会儿想起来可以直接将作文库连成一个母 ...

  10. ROS-SLAM-gmapping

    前言:gmapping是最常用和成熟的slam导航算法,gmapping功能包集成了Rao-Blackwellized粒子滤波算法,为开发者隐去了复杂的内部实现. 前提:已下载并编译了相关功能包集,如 ...