字典是由key and value 构成,无序结构(不想列表那样有固体位置);
note:key 是唯一的,没有重复;
字典可以多级嵌套;
定义:
dict1 = { # 由等式构成 dict = { “key” : "value,....} "sid170" : "hbb", # :不能写成“=” ; 结束要有 “,”. \'sid171\' : "zheng", \'tid\' : { # 嵌套 "key1" : {"key" : "value"} "tid01" : "wang", \'tid02\' : "deng" } # 总体而言需要注意:1)何时用等号,何时用冒号;2)记得加逗号 }
操作:单级的操作
info = { # "sid1701" = "hbb", #错误的书写方式:将:写成= "sid170" : "hbb", \'sid171\' : "zhang", \'sid172\' : "tian" } print(info) # {\'sid170\': \'hbb\', \'sid171\': \'zhang\', \'sid172\': \'tian\'} # add # info ["sid173"] : "新来的" # 错误:等号 写成 冒号 # {\'sid170\': \'hbb\', \'sid171\': \'zhang\', \'sid172\': \'tian\'} # info \'sid177\' = \'sunwukong\' # 错误:[] 写成 “ ” info ["sid173"] = "新来的" # 感觉不好记呀 # {\'sid170\': \'hbb\', \'sid171\': \'zhang\', \'sid172\': \'tian\', \'sid173\': \'新来的\'} print(info # revise info ["sid170"] = \'HBB\' # 表达方式和新增相同,只是将旧的内容换掉 #{\'sid170\': \'HBB\', \'sid171\': \'zhang\', \'sid172\': \'tian\', \'sid173\': \'新来的\'} print(info) # delete info.pop ("sid173") # 标准删除(建议这个) # {\'sid170\': \'HBB\', \'sid171\': \'zhang\', \'sid172\': \'tian\'} print(info) del info ["sid172"] # 也能删除,感觉不好就 # {\'sid170\': \'HBB\', \'sid171\': \'zhang\', \'sid173\': \'新来的\'} print(info) info.popitem() # 随机删除一个 # {\'sid170\': \'HBB\'} print(info) info ["sid177"] = \'孙悟空\' info [\'sid178\'] = \'白骨精\' # 上面的东西太少了,再添加两个 print(info)
# find someone print(\'sid178\' in info) # 标准用法 (是否在其中) # True print(\'sid172\' in info) # False print(info.get(\'sid177\')) # 导出信息 # 孙悟空 print(info["sid178"]) # 导出信息 # 白骨精 # print(info["sid179"]) # 没有的话显示出错 # KeyError: \'sid179\' print(info.keys()) # 输出 keys # dict_keys([\'sid170\', \'sid177\', \'sid178\']) print(info.values()) # 输出 valuse # dict_values([\'HBB\', \'孙悟空\', \'白骨精\'])
操作:多级简单操作
info = { "sid170" : "hbb", \'sid171\' : "zhang", \'tid\' : { "tid01" : "wang", "tid02" : "deng" } } # define print(info)
# add one info ["sid173"] = \'bao\' print(info) # add more info_3 = { "nid" : { "nid01" : "li", \'nid02\' : "jie" } } # info.update(info_3) # style 1 info.setdefault("sid",{"sid01":"li",\'sid02\':"zhang"}) # style 2 print(info) # difference bigger 两种方式不同之处:1)表达的不同;2)作用的不同。具体下面 # revise info ["tid"][\'tid01\'] = "zhong" # 逐层去找,然后更改 print(info) # delete del info ["tid"]["tid02"] # 逐层去找,然后删除 print(info) del info ["sid"] # 删除一个层 print(info) # info.pop(["tid"]["tid01"]) # can\'t use # find print(info.get("tid")) # print(info.get(["tid"]["tid01"])) # can\'t use print(\'tid\' in info) # True # print(\'tid01\' in info) # False # can\'t use
操作3:多级复杂操作
1 info = { 2 "sid170" : "hbb", 3 \'sid171\' : "zhang", 4 \'sid172\' : "tian", 5 \'tid\' : { 6 "tid01" : "wang", 7 "tid02" : "deng" 8 } 9 } # 首先定义一个嵌套列表 10 print(info) # keys output # {\'sid170\': \'hbb\', \'sid171\': \'zhang\', \'sid172\': \'tian\', \'tid\': {\'tid01\': \'wang\', \'tid02\': \'deng\'}} 11 print(info.keys()) # values output # dict_keys([\'sid170\', \'sid171\', \'sid172\', \'tid\']) 12 print(info.values()) # dict_values([\'hbb\', \'zhang\', \'tian\', {\'tid01\': \'wang\', \'tid02\': \'deng\'}]) 13 14 info.setdefault( "did" ,{"did01":\'zhou\',\'did02\':\'li\'}) # 新加一个嵌套关系,若原来没有就增加进去 # {\'sid170\': \'hbb\', \'sid171\': \'zhang\', \'sid172\': \'tian\', \'tid\': {\'tid01\': \'wang\', \'tid02\': \'deng\'}, \'did\': {\'did01\': \'zhou\', \'did02\': \'li\'}} 15 info.setdefault( "tid" ,{"did01":\'zhou\',\'did02\':\'li\'}) # 如果原来有,不做任何修(前一行代码加*运行) #{\'sid170\': \'hbb\', \'sid171\': \'zhang\', \'sid172\': \'tian\', \'tid\': {\'tid01\': \'wang\', \'tid02\': \'deng\'} 16 print(info) 17 18 info_2 = { 19 "tid01" : "gu", 20 "tid03" : "zhuan", 21 } # 定义一个新的字典 22 print(info) # 旧结果字典 # {\'sid170\': \'hbb\', \'sid171\': \'zhang\', \'sid172\': \'tian\', \'tid\': {\'tid01\': \'wang\', \'tid02\': \'deng\'}, \'did\': {\'did01\': \'zhou\', \'did02\': \'li\'}} 23 print(info_2) # 新字典结果 # {\'tid01\': \'gu\', \'tid03\': \'zhuan\'} 24 info.update(info_2) # 将新字典同步到旧字典 # {\'sid170\': \'hbb\', \'sid171\': \'zhang\', \'sid172\': \'tian\', \'tid\': {\'tid01\': \'wang\', \'tid02\': \'deng\'}, \'did\': {\'did01\': \'zhou\', \'did02\': \'li\'}, \'tid01\': \'gu\', \'tid03\': \'zhuan\'} 25 print(info) # 没有的新增进去;已经有的不同的,更新掉(注意与setdefault的不同) 26 # 写法不同;意义不同 27 print(info_2.items()) # 将字典的结果,按照列表输出。 # dict_items([(\'tid01\', \'gu\'), (\'tid03\', \'zhuan\')])
总结1: 操作类型一:
# style 1 of operation.
info [\'sid174\'] = "bao"
info [\'sid171\'] = "jian"
del info [\'sid170\']
print(\'sid171\' in info)
总结2 操作类型二:dict.XXXX
info.pop("sid172") print(info) info.popitem() print(info) print(info.get("sid171")) print(info.keys()) print(info.values()) info.setdefault( "tid" ,{"did01":\'zhou\',\'did02\':\'li\'}) print(info) info.update() print(info.items())
类型比较繁杂:
单级词典;多级词典。单机操作的情况,有的还不能用于多级(可能是我操作失误,请指教)。
不同类型的操作。
最后的循环:
for i in info: print(i) print("---------line---------") print(i,info [i]) \'\'\'sid170 ---------line--------- sid170 hbb sid171 ---------line--------- sid171 zheng tid ---------line--------- tid {\'tid01\': \'wang\', \'tid02\': \'deng\'}\'\'\'
需要慢慢消化呀。。。。