一. 字典的简单介绍
字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是
唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后将key-value保存在这个地址中.
这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key'必须是可hash的,
如果你搞不懂什么是可哈希, 暂时可以这样记, 可以改变的都是不可哈希的, 那么可哈希就意味着不可变.
这个是为了能准确的计算内存地址 规定的.
已知的可哈希(不可变)的数据类型: int, str, tuple, bool
不可哈希(可变)的数据类型: list, dict, set

二. 字典的增删改查和其他相关操作
1.增加

dic = {}
dic['name'] = '周润发' # 如果dict中没有出现这个key, 就会新增一个key-value的组合进dict
dic['age'] = 18
print(dic)
# 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值 dic.setdefault('李嘉诚') # 也可以往里面设置值.
dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在 . 那么setdefault将不会起作用
print(dic)

2.删除

ret = dic.pop("jay")
print(ret)
del dic["jay"]
print(dic)
# 随机删除.
ret = dic.popitem()
# 清空字典中的所有内容
dic.clear()

3.修改

dic = {"id": 123, "name": 'sylar', "age": 18}
dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
dic.update(dic1) # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存在key, 则新增.
print(dic)
print(dic1)

4.查询
查询一般用key来查找具体的数据.

print(dic['name'])
# print(dic['sylar']) # 报错
print(dic.get("ok"))
print(dic.get("sylar")) # None
print(dic.get("sylar", "牛B")) # 牛B

5.其他相关操作

 dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科比"}
print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不用管它是什么.当成list来用就行
for key in dic.keys():
print(key)
print(dic.values()) # dict_values([123, 'sylar', 18, '科比']) 一样. 也当成list来
for value in dic.values():
print(value)
print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age', 18), ('ok', '科比')]) 这个东西也是list. 只不 过list中装的是tuple
for key, value in dic.items(): # ?? 这个是解构
print(key, value)
# 解构
a, b = 1, 2
print(a, b)
(c, d) = 3, 4
print(c, d)
e, f = [1, 2, 3] # 解构的时候注意数量必须匹配
print(e, f)

三.字典的嵌套

dic1 = {
"name": "汪峰",
"age": 18,
"wife": {
"name": '章子怡',
"age": 28
},
"children": ['第一个毛孩子', '第二个毛孩子'],
"desc": '峰哥不会告我吧. 没关系. 我想上头条的'
}
print(dic1.get("wife").get("name"))
print(dic1.get("children"))
print(dic1.get("children")[1])

最新文章

  1. 前端精选文摘:BFC 神奇背后的原理
  2. HTML和CSS经典布局3
  3. paip.元数据驱动的转换-读取文件行到个list理念 uapi java php python总结
  4. ruby语言是什么东西
  5. HDU 5651 xiaoxin juju needs help (组合数)
  6. 李洪强iOS开发之OC[015]#pragma mark的使用
  7. uva156 By sixleaves
  8. idea_intellij
  9. jmeter中一次运行多条sql语句
  10. Maven配置ojdbc14-10.2.0.4.0.jar
  11. js中Array数组基本方法
  12. 棋牌平台开发教程之扎金花大小比较算法在php中的实现
  13. python 全栈开发,Day37(操作系统的发展史)
  14. QT 布局管理器的使用
  15. [OpenCV] Install OpenCV 3.3 with DNN
  16. CHARACTER SET
  17. [Unity优化]UI优化(一):RaycastTarget
  18. 万恶之源 - Python数据类型二
  19. Entities、pads、links 实体、垫、链接
  20. WordPress 主题教程:从零开始制作 WordPress 主题

热门文章

  1. 【转】android ViewPager,ViewFlipper,ViewFlow实现左右滑动
  2. 开发安全的 API 所需要核对的清单
  3. JVM:java类的加载机制
  4. Day3 Form表单
  5. Vim 新手节省时间的小技巧
  6. http-equiv和name的区别
  7. 【起航计划 030】2015 起航计划 Android APIDemo的魔鬼步伐 29 App->Preferences->Preferences from code
  8. mvc中尽量避免使用HttpContext.Current.Request
  9. u-boot分析(七)----内存初始化
  10. 学习lucene5.5.4的笔记