码迷,mamicode.com
首页 > 其他好文 > 详细

基本数据类型(dict)

时间:2018-07-06 17:52:22      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:删除   修改   列表   des   style   组成   child   value   for   

一、字典的简单介绍

  字典(dict)是python中唯一的一个映射类型。它是以{ } 括起来的键值对组成。在dict中key是唯一的。在保存的时候,根据key来计算出一个内存地址。然后将key-value保存在这个地址中,这种算法被称为hash算法。所以切记,在dict中存储的key-value中的key必须是可hash的。

暂时认为可hash的不可改变。

  已知的可hash数据类型:int,str,tuple,bool

  不可hash的数据类型:list, dict,set

  语法:

  {key1:value1,key2:value2,...}

 1 # 合法 
 2 dic = {123: 456, True: 999, "id": 1, "name": sylar, "age": 18, "stu": [帅 哥, 美?女女], (1, 2, 3): 麻花藤} 
 3 print(dic[123]) 
 4 print(dic[True]) 
 5 print(dic[id]) 
 6 print(dic[stu]) 
 7 print(dic[(1, 2, 3)]) 
 8 # 不不合法 
 9 # dic = {[1, 2, 3]: ‘周杰伦‘}   # list是可变的. 不不能作为key 
10 # dic = {{1: 2}: "哈哈哈"}     # dict是可变的. 不不能作为key 
11 dic = {{1, 2, 3}: 呵呵呵}    # set是可变的, 不不能作为key

 

  dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. 而hash表不是连续的. 所以不能进行切片工作. 它只能通过key来获取dict中的数据 

二、字典的增删改查及其他相关操作

1.增加

1 dic={}
2 # dic[key]=value
3 dic[name] = "王力宏"
4 
5 #如果dict中没有出现过某key-value,也可以通过setdefault增加
6 dic.setdefault("key")
7 dic.setdefault("周杰伦")  #当只有key时,value为None
8 dic.setdefault("周杰伦""昆凌"#当dict中存在相应键值,setdefault无作用

2.删除

 1 dic = {"id":3,"name":"林俊杰"}
 2 #ret = dic.pop("id")  #pop(key)会返还键对应的值
 3 #print(dic)
 4 #print(ret)
 5 
 6 del dic["name"]
 7 print(dic)
 8 
 9 #随机删除
10 ret = dic.popitem()
11 
12 #清空字典
13 dic.clear()

3.修改

1 dic = {"id": 1, "name": "王健林","money": 999999}
2 dic1= {"id":3, "喜欢的人":"王力宏"}
3 dic.update(dic1)
4 print(dic)

4.查询

1 dic = {"SA":"隐身刺客","TA":"圣堂刺客","NA":"暗夜刺客"}
2 print(dic["SA"])
3 # print(dic["GA"])   #没有相应的key值,则报错
4 print(dic.get("GA"))  #==> None
5 print(dic.get("GA","炼金术士")) #  ==>炼金术士,给一个默认值,不是添加到dic里

5.其他相关操作

 1 dic = {"王力宏":"爱的就是你","孙燕姿":"同类","周杰伦":"晴天"}
 2 print(dic.keys()) #dict_keys([‘王力宏‘, ‘孙燕姿‘, ‘周杰伦‘])  不是列表,可当成list来用
 3 for key in dic.keys():
 4     print(key)
 5 print(dic.values())
 6 for value in dic.values():
 7     print(value)
 8 print(dic.items())   #dict_items([(‘王力宏‘, ‘爱的就是你‘), (‘孙燕姿‘, ‘同类‘), (‘周杰伦‘, ‘晴天‘)])
 9 for key,value in dic.items():
10     print(key, value)

   涉及知识:解构

a, b = 1, 2
print(a, b)   # 1 2
e, f, g = [1, 2, 3]
print(e,f,g)  #  1 2 3

三、字典的嵌套

 1 dic1 = {
 2     "name": "汪峰",
 3     "age": 38,
 4     "wife": {
 5         "name": 章子怡,
 6         "age": 28    },
 7     "children": [第一个毛孩?子, 第二个毛孩?子],
 8     "desc": 峰哥不会告我吧. 没关系. 我想上头条的
 9 }
10 
11 print(dic1.get("wife").get("name"))

 

基本数据类型(dict)

标签:删除   修改   列表   des   style   组成   child   value   for   

原文地址:https://www.cnblogs.com/listash/p/9273806.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!