基本数据类型(dict)字典

一.字典

dict: 用{}来表示   键值对数据   {key:value}    唯一性

键  都必须是可哈希的   不变的数据类型就可以当做字典中的键

值  没有任何限制

已知的可哈希(不可变)的数据类型: int, str, tuple, bool 不可哈希(可变)的数据类型: list, dict, set 

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

注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据

# 合法
# dic = {'name':'chongzi','age':400}
# print(dic)
# dic = {1:'niubi',2:'wahaha'}
# print(dic)
# dic = {True: '德玛西亚',False: '无畏先锋'}
# print(dic)
# dic = {("黑色玫瑰","无畏先锋"):123}
# print(dic)
# 不合法
# dic = {[1, 2, 3]: '周杰伦'}   # list是可变的. 不不能作为key 
# dic = {{1: 2}: "哈哈哈"}     # dict是可变的. 不不能作为key 
# dic = {{1, 2, 3}: '呵呵呵'}    # set是可变的, 不不能作为key

 

二.增删改查

1.增加

dic[key] =  value

dic.setdefault(key,value)  如果键在字典中存在不进行任何操作,否则就添加

              可以通过key查询,没有这个key返回None 

# 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.删除

pop(key)                             有返回值,返回的是被删除value

del dic[key]

popitem()          随机删除

clear()                                    清空字典

# dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
# ret = dic.pop('易大师')  #通过key删除  返回被删除的value    
#  print(ret)
# del dic['剑豪']
#  dic.clear()   # {}

# ret = dic.popitem()   #随机删除返回值一个元组  (key,value)
# print(ret)
# print(dic)

 

3.修改

dic[key] = value

dic. update(字典)

# dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
# dic['剑豪'] = '哈莎阁'   # 强制修改
# dic1 = {'火女':'安妮','火男':'布兰德','维恩':'暗影猎手','剑豪':'哈莎阁'}
# dic1.update(dic)
# print(dic1

 

4.查询

get(key)

dic(key)

for 循环

setdefault(key)

# dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
# for 循环       元祖  键  值   键值对

# for i in  dic:
#     print(i)     #for 循环默认是获取字典中的键

# print(dic['易大师父'])                   #查看1   没有这个键的时候查询会报错
# print(dic.get('易大师','你傻啊,没有!'))    #查看2   没有返回None 可以指定返回内容

# print(dic.setdefault('易大师范湖'))        #查看3    没有返回None

 end = ' ' : 输出结果不换行

三.字典的其他操作

keys  获取到所有的键存在一个高仿的列表中

values  获取到所有的值存在一个高仿的列表中

items  获取到所有的键值对以元组的形式存在一个高仿的列表中

# 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

  a,b = (1,2)

  a,b = [1,2]

  a,b = {1,2}

  a,b = '1,2'     #错

# a,b = '12'   #将后边解构打开按位置赋值给变量支持  字符串 列表 元组
# print(a)
# print(b)

# e,f = [1,2,3] # 解构时注意数量必须匹配
# print(e,f)
# dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'} # for a,b in dic.items(): # print(a) # print(b) # 不常用 # dic1 = {} # dics = dic1.fromkeys([1,2,3],'abc')

 

四.字典的嵌套

 1 dic = {
 2 
 3   'name':'汪峰',
 4 
 5   'age':43,
 6 
 7   'wife':{
 8 
 9     'name':'国际章',
10 
11     'age':39,
12 
13     ' salary':100000
14 
15     },
16 
17     'babay':[
18 
19       {'name':'熊大','age':18},
20 
21       {'name':'熊二','age':15},
22 
23     ]
24 
25 }
26 
27 
28 
29 dic['baby'][0]['age'] = 19
30 
31 print(dic)
posted @ 2018-08-01 16:30  骑驴老神仙  阅读(394)  评论(0)    收藏  举报