zoukankan      html  css  js  c++  java
  • 字典的定义和操作 (Python)

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

    需要慢慢消化呀。。。。

  • 相关阅读:
    How to use epoll? A complete example in C
    分享:libzip 0.11 发布,C 语言的 zip 压缩开发包
    linux AIO (异步IO) 那点事儿
    通过引用计数解决野指针的问题(C&C++)
    [原]浅谈几种服务器端模型——反应堆模式(epoll 简介) _Boz 博客园
    基于EPOLL写的HTTP服务器(加入了线程池)_没落都城_新浪博客
    jQuery检测浏览器名称和版本信息
    Jquery.ajax中dataType不可少
    jquery 手风琴效果
    ie下ajax错误:由于出现错误 c00ce56e 而导致此项操作无法完成
  • 原文地址:https://www.cnblogs.com/hanbb/p/7208356.html
Copyright © 2011-2022 走看看