13-python-dict(字典)

# dict

'''
数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:元组,bool,int,str 可哈希
可变数据类型:list,dict,set 不可哈希

dict :
key : 必须时不可变数据类型,可哈希,
value : 任意数据类型
dict 优点:
二分查找去查询
储存大量的关系型数据
dict 特点:
无序的
'''

# dic = {
#     'name':['张三','李四'],
#     'a':[
#         {'age':12,'sex':1},
#         {'age':16,'sex':2},
#     ]
# }
#
# print(dic)

# dic1 = {'name':'zs','age':12,'sex':1}
# dic1['height'] = 999
# dic1['age'] = 55


# print(dic1)

# -------------------------------- 增 --------------------------------
dic1 = {'name':'zs','age':12,'sex':1,'height':555}

  


# 1 dic1['height'] = 222 # 直接添加 键(keys),值(values) 如果有的话 会覆盖
1 dic1['height'] = 222     # 有 键 会覆盖
2 print(dic1)     # 打印结果:{'name': 'zs', 'age': 12, 'sex': 1, 'height': 222}

# 2 setdefault() # 有键 的话 不做任何改变,没有才添加
1 dic1.setdefault('weight')
2 print(dic1)     # 打印结果:{'name': 'zs', 'age': 12, 'sex': 1, 'height': 222, 'weight': None}
3                 # 没 value 默认为 None

#-------------------------------- 删 ---------------------------------

dic2 = {'name':'zs','age':12,'sex':1,'height':555}

# 1
# 01 pop() # 有返回值 ,按键去删除
1 dic2.pop('age')
2 print(dic2)     #打印结果:{'name': 'zs', 'sex': 1, 'height': 555}
3 
4 # 可以设置返回值   None 为返回值
5 print(dic2.pop('asd',None)) # 打印结果:None


# 02 popitem() 删除最后一个 有返回值:元组,删除的键值
1 # dic2.popitem()
2 # print(dic2)             # 打印结果:{'name': 'zs', 'sex': 1}
3 # print(dic2.popitem())   # 打印结果:('sex', 1)

 


# 03 del
1 # del dic2['name']
2 # print(dic2)     # 打印结果:{'sex': 1, 'height': 555}
3 #
4 # del dic2        # 直接删除  再次打印 就报错
5 
6 #  04   clear()       # 清空字典
7 # dic2.clear()
8 # print(dic2)     # 打印结果:{}


# -------------------------------- 改 --------------------------------
dic3 = {'name':'zs','age':12,'sex':1,'height':555}
# 01    直接改
dic2['name'] = 'zs'

# 02 updata()
1 dic4 = {'name':'zs','age':12,'sex':1,'height':555}
2 dic5 = {'name':'ls','size':22}
3 dic4.update(dic5)
4     # 把 dic5 中的所有键值,更新到 dic4 中,有的就覆盖,没有的就添加  ,dic5 不变
5 print(dic4)     # 打印结果:{'name': 'ls', 'age': 12, 'sex': 1, 'height': 555, 'size': 22}
6 print(dic5)     # 打印结果:{'name': 'ls', 'size': 22}

# -------------------------------- 查 --------------------------------
# 1:kys() 2: values() 3:items()
dic6 = {'name':'zs','age':12,'sex':1,'height':555}
 1 print(dic6.keys())      #   键    打印结果:dict_keys(['name', 'age', 'sex', 'height'])
 2 print(dic6.values())    #   值    打印结果:dict_values(['zs', 12, 1, 555])
 3 print(dic6.items())     # 键,值       打印结果:dict_items([('name', 'zs'), ('age', 12), ('sex', 1), ('height', 555)])
 4                                 # 一个元组,列表中有多个列表,列表中对应多个键值
 5 for i in dic6:  #for i in dic6.keys():
 6     print(i)    # 打印的是 键
 7 
 8 for i in dic6.values():
 9     print(i)    # 打印的是 值
10 
11 for k,v in dic6.items():
12     print(k,v)  # 打印的是 键,值
# 01    get()   查 键
1 print(dic6.get('meiyou'))   # 打印:None
2 print(dic6.get('meiyou','没有这个键'))   # 打印:没有这个键  (可自定义设置)

# ---------------面试题---------------------
# 用一行代码使 a,b 值互换
a = 1
b = 2
a,b = b,a
print(a,b)      # 打印结果:2 1

 

posted @ 2018-09-26 21:48  _Q  阅读(153)  评论(0)    收藏  举报