day 5 字典基本操作 增删改查的方法,和字典嵌套

# #######字典的增加
# dic ={ 'name' : 'jone',
# 'age' : 18,
# 'scort': 450
# }
# print(dic)
# #######字典的增加
# dic ={ 'name' : 'jone',
# 'age' : 18,
# 'scort': 450
# }
# print(dic)
# # dic['name2'] ='王哥' #字典新增加 键值 'name2’ : '王哥'
# # print(dic)
#
# dic['name2'] ='张哥' #如果新增的key与之前的重复 那么后面的vaule 替换掉之前的
# print(dic)
#
#
# #有key不变,没有key才添加。
# dic.setdefault('car')
# print(dic) #key=cat value=None 空 #如果setdefaule 后面只有’car‘一个值那么 等于 key value为None
#
# dic.setdefault('bus','司机') #如果setdefaule 后输入2个'* ','*' 第一个为key,2,为value
# print(dic) #('bus','司机') = 'key'.'valye'
#
# dic.setdefault('pollic','交警')
# print(dic)
# #dic的删除
# #print(dic.pop('name'))
# #print(dic.pop('name5')) #报错没有 KeyError: 'name5'
#
# #清空dic列表clear()
# # dic.clear()
# # print(dic)
#
# #del 删除字典,删除键,值对
# #del dic
#
# # del dic['name']
# # print(dic) #直接删除了[name]中的 键和值
#
# # print(dic.popitem())# 除了键对的最后一组 前面的都删除
#
# #####字典的改
# #dic['key']= value
# #有key就有覆盖
# #update 将dic的键值对,覆盖,添加到dic2 中dic不变
# dic = {'name1':'xue',
# 'age1':189,
# 'sex':'male'}
# dic2 ={'name': 'jon',
# 'weight' : 75}
# dic2.update(dic) #把dic 里面的数据update到dic2里面 重复就覆盖 没有就添加
# print(dic2)
#
# ####字典查看
# print(dic2['name']) ##通过字典[搜索keys] 找到 :结果为!!!jon
#
# print(dic2.get('name')) #通过字典get判断(里面的在不在) 结果为!!!jon
# print(dic2.get('name2','没有此键值对')) #!!!结果为没有此键值对
#
# keys = dic2.keys() #dic2.赋给keys
# print(keys,type(keys)) #打印出keys里面的 typechak 数据类型 ,
# #结果为 !!!dict_keys(['name', 'weight', 'name1', 'age1', 'sex']) <class 'dict_keys'>
#
# k = list(keys) #给k 把keys= list类型赋值给K
# print(k,type(k))
# #现在查看 k变量结果为 ['name', 'weight', 'name1', 'age1', 'sex'] <class 'lis
#
#
# value = dic2.values() #打印出dic2中的 values的索引的value
# print(value)
# #dict_values(['jon', 75, 'xue', 189, 'male'])
#
# items = dic2.items() #items打印出来的keys 和value 打印出的是元组类型
# print(items)
# #dict_items([('name', 'jon'), ('weight', 75), ('name1', 'xue'), ('age1', 189), ('sex', 'male')])
#
# # for k in dic2:
# # print(k) 循环打印出 k 里面的也就是 dic2 里面的KEYS
#
# for k in dic.keys():
# print(k) #打印出的结果为dic 重的key 键,对没有打印出
# # name1
# # age1
# # sex
#
# for k in dic.values():
# print(k) #结果打印出 的是dic 中的value
#
# for k,v in dic.items():
# print(k,v) #结果 k=keys v = value 可以一下吧 key,value一下打印出来

########################################字典字典字典字典#########################################

#1.字典:python中非常重要的数据类型,在python中唯一一个映射的数据类型

2.#可变与不可变:
# 不可变数据类型: int str bool tuple
# 可变数据类型: list,dict,set

3.#list 和 tuple 可以用来表示顺序集合,例如,班里同学的名字:
#['小黑','长江','依米'] 或者 个人的成绩 [95, 85, 59] 但是,要根据名字找到对应的成绩,用两个 list 表示就不方便

#那如果把人名和成绩分数关联对应起来 就比较好找,
# 如:'小黑' ==> 95
# '长江' ==> 85
# '依米' ==> 59

#所以dict 字典就是专门用来做这件事, 用dic 表示名字-成绩 的查找表
# 如: dic = {
# '小黑': 95,
# '小黑': 85,
# '小黑': 59
# }
######字典的 key:value
# key 是唯一的 且 是不可变数据类型
# value:任意数据类型.
#在3.5版本之前,字典是无序的,3.6之后,有序.

#####字典用{}表示这是一个字典,然后按照key,value来表示 小黑用字典的key来表示,成绩’95‘用value表示 这是字典的语法!
# print(len(dic))###是可以计算出字典的大小有几个 key-value

# dic字典中可以放入大量的数据类型,且关联性很强!
dic ={'name':'alex',
'name_list':['小黑','长江','依米'],
1:{'name':'taibai'},
(1,2,3):'wusir',
True:'真的',
'age':(2134,12),
}
#字典的增加!
dic1 = {'name':'xue',
'age': 18,
'sex': 25
}

#有key 就覆盖,没有key就添加!
#有key 就覆盖,没有key就添加!
dic1['name2']='依米'
print(dic1) #打印结果为
###结果:{'name': 'xue', 'age': 18, 'sex': 25, 'name2': '依米'}

#有key 就覆盖,没有key就添加!
#有key 就覆盖,没有key就添加!

dic1['name'] = '王子'
print(dic1)
###结果:{'name': '王子', 'age': 18, 'sex': 25, 'name2': '依米'}


###setdeafult == 有key不变,没有key才添加.

# dic1.setdefault('boy')
# print(dic1)
###结果为:{'name': '王子', 'age': 18, 'sex': 25, 'name2': '依米', 'boy': None}

dic1.setdefault('hobby','开船')
print(dic1)
###输出结果;{ 'name': '王子', 'age': 18, 'sex': 25, 'name2': '依米', 'hobby': '开船'}

dic1.setdefault('name','太白')
print(dic1)
###输出结果: {'name': '王子', 'age': 18, 'sex': 25, 'name2': '依米', 'hobby': '开船'}
####!如果dic1中有了name 那么新加的 key he value不变

########################字典的删除###################################################
#pop 按key删除,有返回值, 并且如果没有此key,可设置返回值.
x= dic1.pop('age')
print(x)
##输出结果为:{'name': '王子', 'sex': 25, 'name2': '依米', 'hobby': '开船'}

#pop()加元素直接删除 key和value
#x= dic1.pop('agex','没有此键')
#print(x)
###输出结果为 没有此键

###清空 clear()
# dic1.clear()
# print(dic1)
## 输出结果为{}

#del 删除字典,删除键值对

#del dic1 直接彻底删除dic1 查看不到
#del dic1['sex']
#print(dic1)
### 输出结果为:{'name': '王子', 'name2': '依米', 'hobby': '开船'}
##按照dic1里面的 key ,然后value 也跟着删除

#res = dic1.popitem()
#print(res)
###输出结果为('hobby', '开船')随即删除 一般只留最后一组key


################################改###############################################

#dic['key'] = value
dic = {'name':'jin','age':18,'sex':'male'}
dic1 = {'name':'alex','weight':75}
dic1.update(dic) #把dic1.中的数据更新到dic当中
print(dic1) #打印dic1中的得到dic的数据
###输出结果为 {'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}

###############################查##################################################

print(dic1['name']) #查看dic当中的name,的valye

print(dic1.get('age')) #用dic.get的方法判断数据key是否存在,存在直接打印出

print(dic1.get('eng','没有此键值对!')) ##如果dic.get 找不到所查的key,后提示
#输出结果为 没有此键值对!


keys = dic1.keys() #给dic1.keys查看键,赋值给keys
print(keys) #打印出 dic的运行结果

#dict_keys(['name', 'weight', 'age', 'sex'])

print(keys,type(keys)) #打印输出keys里面的数据和keys的数据类型
k = list(keys)

print(k,type(k)) #此时K打印出来的是list类型
##输出结果['name', 'weight', 'age', 'sex'] <class 'list'>
values = dic1.values() #查看dic1重value 的数量
print(values)
###输出结果为 dict_values(['jin', 75, 18, 'male'])
items = dic1.items()
print(items)
##输出的结果为dict_items([('name', 'jin'), ('weight', 75), ('age', 18), ('sex', 'male')])
##其实items打印出的列表为元组


####################################dic#####for 循环查看##########
# for k in dic1: ##依次打印出了k 在for 上的 key感
# print(k)
# #输出结果为
# 'name',
# 'weight',
# 'age'
# 'e'

# for k,v in dic1.items():## 分别用k ,v 表示 key ,和 value
# print(k,v)
#打印结果为
# name jin
# age 18
# seex mal

# for k in dic1:
# print(k,dic[k])
# #打印结果为
# # name jin
# # age 18
# # seex mal

#################################dic的字典嵌套#####################################
dic = {
'name':'金鑫',
'name_list':[1,2,3,'李杰'],
1:{
'python10':['小黑','萌哥'],
'老男孩':{'name':'oldboy','age':56}
}
}
#1,[1,2,3,'李杰']追加'wusir'
# dic['name_list'].append('wusir')

#2, ['小黑','萌哥'] 小黑 萌哥中间 插入一个花哥
# l = dic[1]['python10']
# l.insert(1,'花哥')
# print(dic)

3.# {'name':'oldboy','age':56} 添加一个键值对,hobby:男人

dic1 = dic[1]
dic2 = dic1['老男孩']
dic2['hobby'] = '男人'
dic[1]['老男孩']['hobby'] = 'man'
print(dic)
##################################################################






# # dic['name2'] ='王哥' #字典新增加 键值 'name2’ : '王哥'
# # print(dic)
#
# dic['name2'] ='张哥' #如果新增的key与之前的重复 那么后面的vaule 替换掉之前的
# print(dic)
#
#
# #有key不变,没有key才添加。
# dic.setdefault('car')
# print(dic) #key=cat value=None 空 #如果setdefaule 后面只有’car‘一个值那么 等于 key value为None
#
# dic.setdefault('bus','司机') #如果setdefaule 后输入2个'* ','*' 第一个为key,2,为value
# print(dic) #('bus','司机') = 'key'.'valye'
#
# dic.setdefault('pollic','交警')
# print(dic)
# #dic的删除
# #print(dic.pop('name'))
# #print(dic.pop('name5')) #报错没有 KeyError: 'name5'
#
# #清空dic列表clear()
# # dic.clear()
# # print(dic)
#
# #del 删除字典,删除键,值对
# #del dic
#
# # del dic['name']
# # print(dic) #直接删除了[name]中的 键和值
#
# # print(dic.popitem())# 除了键对的最后一组 前面的都删除
#
# #####字典的改
# #dic['key']= value
# #有key就有覆盖
# #update 将dic的键值对,覆盖,添加到dic2 中dic不变
# dic = {'name1':'xue',
# 'age1':189,
# 'sex':'male'}
# dic2 ={'name': 'jon',
# 'weight' : 75}
# dic2.update(dic) #把dic 里面的数据update到dic2里面 重复就覆盖 没有就添加
# print(dic2)
#
# ####字典查看
# print(dic2['name']) ##通过字典[搜索keys] 找到 :结果为!!!jon
#
# print(dic2.get('name')) #通过字典get判断(里面的在不在) 结果为!!!jon
# print(dic2.get('name2','没有此键值对')) #!!!结果为没有此键值对
#
# keys = dic2.keys() #dic2.赋给keys
# print(keys,type(keys)) #打印出keys里面的 typechak 数据类型 ,
# #结果为 !!!dict_keys(['name', 'weight', 'name1', 'age1', 'sex']) <class 'dict_keys'>
#
# k = list(keys) #给k 把keys= list类型赋值给K
# print(k,type(k))
# #现在查看 k变量结果为 ['name', 'weight', 'name1', 'age1', 'sex'] <class 'lis
#
#
# value = dic2.values() #打印出dic2中的 values的索引的value
# print(value)
# #dict_values(['jon', 75, 'xue', 189, 'male'])
#
# items = dic2.items() #items打印出来的keys 和value 打印出的是元组类型
# print(items)
# #dict_items([('name', 'jon'), ('weight', 75), ('name1', 'xue'), ('age1', 189), ('sex', 'male')])
#
# # for k in dic2:
# # print(k) 循环打印出 k 里面的也就是 dic2 里面的KEYS
#
# for k in dic.keys():
# print(k) #打印出的结果为dic 重的key 键,对没有打印出
# # name1
# # age1
# # sex
#
# for k in dic.values():
# print(k) #结果打印出 的是dic 中的value
#
# for k,v in dic.items():
# print(k,v) #结果 k=keys v = value 可以一下吧 key,value一下打印出来

########################################字典字典字典字典#########################################

#1.字典:python中非常重要的数据类型,在python中唯一一个映射的数据类型

2.#可变与不可变:
# 不可变数据类型: int str bool tuple
# 可变数据类型: list,dict,set

3.#list 和 tuple 可以用来表示顺序集合,例如,班里同学的名字:
#['小黑','长江','依米'] 或者 个人的成绩 [95, 85, 59] 但是,要根据名字找到对应的成绩,用两个 list 表示就不方便

#那如果把人名和成绩分数关联对应起来 就比较好找,
# 如:'小黑' ==> 95
# '长江' ==> 85
# '依米' ==> 59

#所以dict 字典就是专门用来做这件事, 用dic 表示名字-成绩 的查找表
# 如: dic = {
# '小黑': 95,
# '小黑': 85,
# '小黑': 59
# }
######字典的 key:value
# key 是唯一的 且 是不可变数据类型
# value:任意数据类型.
#在3.5版本之前,字典是无序的,3.6之后,有序.

#####字典用{}表示这是一个字典,然后按照key,value来表示 小黑用字典的key来表示,成绩’95‘用value表示 这是字典的语法!
# print(len(dic))###是可以计算出字典的大小有几个 key-value

# dic字典中可以放入大量的数据类型,且关联性很强!
dic ={'name':'alex',
'name_list':['小黑','长江','依米'],
1:{'name':'taibai'},
(1,2,3):'wusir',
True:'真的',
'age':(2134,12),
}
#字典的增加!
dic1 = {'name':'xue',
'age': 18,
'sex': 25
}

#有key 就覆盖,没有key就添加!
#有key 就覆盖,没有key就添加!
dic1['name2']='依米'
print(dic1) #打印结果为
###结果:{'name': 'xue', 'age': 18, 'sex': 25, 'name2': '依米'}

#有key 就覆盖,没有key就添加!
#有key 就覆盖,没有key就添加!

dic1['name'] = '王子'
print(dic1)
###结果:{'name': '王子', 'age': 18, 'sex': 25, 'name2': '依米'}


###setdeafult == 有key不变,没有key才添加.

# dic1.setdefault('boy')
# print(dic1)
###结果为:{'name': '王子', 'age': 18, 'sex': 25, 'name2': '依米', 'boy': None}

dic1.setdefault('hobby','开船')
print(dic1)
###输出结果;{ 'name': '王子', 'age': 18, 'sex': 25, 'name2': '依米', 'hobby': '开船'}

dic1.setdefault('name','太白')
print(dic1)
###输出结果: {'name': '王子', 'age': 18, 'sex': 25, 'name2': '依米', 'hobby': '开船'}
####!如果dic1中有了name 那么新加的 key he value不变

########################字典的删除###################################################
#pop 按key删除,有返回值, 并且如果没有此key,可设置返回值.
x= dic1.pop('age')
print(x)
##输出结果为:{'name': '王子', 'sex': 25, 'name2': '依米', 'hobby': '开船'}

#pop()加元素直接删除 key和value
#x= dic1.pop('agex','没有此键')
#print(x)
###输出结果为 没有此键

###清空 clear()
# dic1.clear()
# print(dic1)
## 输出结果为{}

#del 删除字典,删除键值对

#del dic1 直接彻底删除dic1 查看不到
#del dic1['sex']
#print(dic1)
### 输出结果为:{'name': '王子', 'name2': '依米', 'hobby': '开船'}
##按照dic1里面的 key ,然后value 也跟着删除

#res = dic1.popitem()
#print(res)
###输出结果为('hobby', '开船')随即删除 一般只留最后一组key


################################改###############################################

#dic['key'] = value
dic = {'name':'jin','age':18,'sex':'male'}
dic1 = {'name':'alex','weight':75}
dic1.update(dic) #把dic1.中的数据更新到dic当中
print(dic1) #打印dic1中的得到dic的数据
###输出结果为 {'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}

###############################查##################################################

print(dic1['name']) #查看dic当中的name,的valye

print(dic1.get('age')) #用dic.get的方法判断数据key是否存在,存在直接打印出

print(dic1.get('eng','没有此键值对!')) ##如果dic.get 找不到所查的key,后提示
#输出结果为 没有此键值对!


keys = dic1.keys() #给dic1.keys查看键,赋值给keys
print(keys) #打印出 dic的运行结果

#dict_keys(['name', 'weight', 'age', 'sex'])

print(keys,type(keys)) #打印输出keys里面的数据和keys的数据类型
k = list(keys)

print(k,type(k)) #此时K打印出来的是list类型
##输出结果['name', 'weight', 'age', 'sex'] <class 'list'>
values = dic1.values() #查看dic1重value 的数量
print(values)
###输出结果为 dict_values(['jin', 75, 18, 'male'])
items = dic1.items()
print(items)
##输出的结果为dict_items([('name', 'jin'), ('weight', 75), ('age', 18), ('sex', 'male')])
##其实items打印出的列表为元组


####################################dic#####for 循环查看##########
# for k in dic1: ##依次打印出了k 在for 上的 key感
# print(k)
# #输出结果为
# 'name',
# 'weight',
# 'age'
# 'e'

# for k,v in dic1.items():## 分别用k ,v 表示 key ,和 value
# print(k,v)
#打印结果为
# name jin
# age 18
# seex mal

# for k in dic1:
# print(k,dic[k])
# #打印结果为
# # name jin
# # age 18
# # seex mal

#################################dic的字典嵌套#####################################
dic = {
'name':'金鑫',
'name_list':[1,2,3,'李杰'],
1:{
'python10':['小黑','萌哥'],
'老男孩':{'name':'oldboy','age':56}
}
}
#1,[1,2,3,'李杰']追加'wusir'
# dic['name_list'].append('wusir')

#2, ['小黑','萌哥'] 小黑 萌哥中间 插入一个花哥
# l = dic[1]['python10']
# l.insert(1,'花哥')
# print(dic)

3.# {'name':'oldboy','age':56} 添加一个键值对,hobby:男人

dic1 = dic[1]
dic2 = dic1['老男孩']
dic2['hobby'] = '男人'
dic[1]['老男孩']['hobby'] = 'man'
print(dic)
##################################################################





posted @ 2018-01-25 20:16  胸不平$怎平天下  阅读(224)  评论(0编辑  收藏  举报