码迷,mamicode.com
首页 > 编程语言 > 详细

字典的定义和操作 (Python)

时间:2017-07-19 23:37:39      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:false   pop   als   err   不能   blog   fine   ...   opera   

字典是由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‘}‘‘‘

需要慢慢消化呀。。。。

字典的定义和操作 (Python)

标签:false   pop   als   err   不能   blog   fine   ...   opera   

原文地址:http://www.cnblogs.com/hanbb/p/7208356.html

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