Antony Lee的技術(shù)之路
          步步為營(yíng)
          posts - 13,  comments - 3,  trackbacks - 0

          映射類型
              定義:鍵值對(duì),鍵不能重復(fù),值可以重復(fù)。Python中的映射類型是字典(dict)
              映射的創(chuàng)建
                  1. 字面值創(chuàng)建
                      eg. d = {'a' : 100, 'b':200 }
                  2. 工廠函數(shù)dict()創(chuàng)建
                      eg1. d = dict([['x', 1], ['y':2]])
                      eg2. d = dict(x=1, y=2)
                      eg3. d = dict( zip(('x', 'y'), (1,2)) )
                  3. 其他函數(shù)
                      d = dict.fromkeys( (1,2,3), 'value' ) #創(chuàng)建一個(gè)dict,鍵為1,2,3,值為value
              映射的使用
                  1. 鍵值讀寫
                      []操作符:
                          可以用來(lái)獲得值或者設(shè)置/新建值
                          在讀取的時(shí)候,如果鍵不存在,則拋出一個(gè)錯(cuò)誤
                          eg.
                              a = {'x':1, 'y':2}
                              a['z'] = 3         #鍵不存在,則創(chuàng)建鍵值對(duì)
                              a['x'] = '6'    #鍵存在,則更新值
                              a['y']            #獲得鍵對(duì)應(yīng)的值
                              #! a['p']        沒有對(duì)應(yīng)的鍵會(huì)拋出Error!
                      get(key, default=None)
                          用來(lái)獲取值時(shí),如果鍵不存在也不會(huì)拋出錯(cuò)誤,會(huì)返回default值
                      NOTE: 沒有set方法
                  2. 遍歷:
                      keys --> 鍵遍歷
                      values --> 值遍歷
                      items --> 鍵值遍歷
                      利用sorted(dict) --> 有序的鍵遍歷(對(duì)鍵排序)
                      eg. TestTraversal.py
                  3. 常用操作
                      刪除
                          del a['x']    #刪除鍵為'x'的條目
                          a.clear        #清除字典
                          a.pop('x')    #刪除鍵為'x'的條目并返回其值
                          a.popitem()    #彈出一個(gè)(k,v)對(duì)并返回。如果a為空則報(bào)錯(cuò)
                      判斷
                          k in/not in dict
                  4. 常用函數(shù)表
                      方法名字                操作
                      dict.clear()        刪除字典中所有元素
                      dict.copy()            返回字典(淺復(fù)制)的一個(gè)副本
                      dict.fromkeysc(seq,
                      val=None)            創(chuàng)建并返回一個(gè)新字典,以seq 中的元素做該字典的鍵,val 做該字典
                                          中所有鍵對(duì)應(yīng)的初始值(如果不提供此值,則默認(rèn)為None)
                      dict.get(key,
                      default=None)        對(duì)字典dict 中的鍵key,返回它對(duì)應(yīng)的值value,如果字典中不存在此
                                          鍵,則返回default 的值(注意,參數(shù)default 的默認(rèn)值為None)
                      dict.has_key(key)    如果鍵(key)在字典中存在,返回True,否則返回False.
                                          在Python2.2版本引入in 和not in 后,此方法幾乎已廢棄不用了,但
                                          仍提供一個(gè)可工作的接口。
                      dict.items()        返回一個(gè)包含字典中(鍵, 值)對(duì)元組的列表
                      dict.keys()            返回一個(gè)包含字典中鍵的列表
                      dict.iter()            方法iteritems(), iterkeys(), itervalues()與它們對(duì)應(yīng)的非迭代方法
                                          一樣,不同的是它們返回一個(gè)迭代子,而不是一個(gè)列表。
                      dict.pop(key
                      [, default])        和方法get()相似,如果字典中key 鍵存在,刪除并返回dict[key],如果
                                          key 鍵不存在,且沒有給出default 的值,引發(fā)KeyError 異常。
                      dict.setdefault(key,
                      default=None)        和方法set()相似,如果字典中不存在key 鍵,由dict[key]=default為它賦值。
                      dict.update(dict2)    將字典dict2 的鍵-值對(duì)添加到字典dict
                      dict.values()        返回一個(gè)包含字典中所有值的列表
              映射的鍵
                  什么可以做為映射的鍵? --> 可hash的
                  什么可hash?
                      1. 不可變對(duì)象 (數(shù)字,字符串。。。)
                      2. 僅包含不可變對(duì)象的不可變?nèi)萜鳎▋H包含不可變對(duì)象的元組)
                      3. 實(shí)現(xiàn)了__hash__()方法的類(可能是可變對(duì)象)

          集合類型(Set)
              特點(diǎn):無(wú)順序,不能重復(fù)
              分類:可修改的集合和不可修改的集合
              創(chuàng)建:
                  >>> s = set('cheeseshop')
                  >>> s
                  set(['c', 'e', 'h', 'o', 'p', 's'])
                  >>> t = frozenset('bookshop')
                  >>> t
                  frozenset(['b', 'h', 'k', 'o', 'p', 's'])
              使用:
                  >>> 'k' in s
                  False
                  >>> 'k' in t
                  True
                  >>> 'c' not in t
                  True
                  >>> for i in s:
                  ... print i
              操作
                  函數(shù)/方法名                    等價(jià)運(yùn)算符                說明
              所有集合類型
                  len(s)                                            集合基數(shù): 集合s 中元素的個(gè)數(shù)
                  set([obj])                                         可變集合工廠函數(shù); obj 必須是支持迭代的,由obj 中
                                                                  的元素創(chuàng)建集合,否則創(chuàng)建一個(gè)空集合
                  frozenset([obj])                                不可變集合工廠函數(shù); 執(zhí)行方式和set()方法相同,但它
                                                                  返回的是不可變集合
                                              obj in s             成員測(cè)試:obj 是s 中的一個(gè)元素嗎?
                                              obj not in s         非成員測(cè)試:obj 不是s 中的一個(gè)元素嗎?
                                              s == t                 等價(jià)測(cè)試: 測(cè)試s 和t 是否具有相同的元素?
                                              s != t                 不等價(jià)測(cè)試: 與==相反
                                              s < t                 (嚴(yán)格意義上)子集測(cè)試; s != t 而且s 中 所 有的元素都是t 的成員
                  s.issubset(t)                 s <= t                 子集測(cè)試(允許不嚴(yán)格意義上的子集): s 中所有的元素    都是t 的成員
                                              s > t                 (嚴(yán)格意義上)超集測(cè)試: s != t 而且t 中所有的元素都是s 的成員
                  s.issuperset(t)             s >= t                 超集測(cè)試(允許不嚴(yán)格意義上的超集): t 中所有的元素    都是s 的成員
                  s.union(t)                     s | t                 合并操作:s 或t 中的元素
                  s.intersection(t)             s & t                 交集操作:s 和t 中的元素
                  s.difference(t)             s - t                 差分操作: s 中的元素,而不是t 中的元素
                  s.symmetric_difference(t)    s ^ t                 對(duì)稱差分操作:s 或t 中的元素,但不是s 和t 共有的元素
                  s.copy()                                         復(fù)制操作:返回s 的(淺復(fù)制)副本
              僅用于可變集合
                  s.update(t)                 s |= t (Union)         修改操作: 將t 中的成員添加s
                  s.intersection_update(t)     s &= t                 交集修改操作: s 中僅包括s 和t 中共有的成員
                  s.difference_update(t)         s -= t                 差修改操作: s 中包括僅屬于s 但不屬于t 的成員
                  s.symmetric_
                  difference_
                  update(t)                     s ^= t                 對(duì)稱差分修改操作: s 中包括僅屬于s 或僅屬于t 的成員
                  s.add(obj)                                         加操作: 將obj 添加到s
                  s.remove(obj)                                     刪除操作: 將obj 從s 中刪除;如果s 中不存在obj,將引發(fā)KeyError
                  s.discard(obj)                                     丟棄操作: remove()的友好版本-如果s中存在obj,從s中刪除它
                  s.pop()                                         Pop 操作: 移除并返回s 中的任意一個(gè)元素
                  s.clear()                                         清除操作: 移除s 中的所有元素

          note note

          posted on 2011-06-10 15:23 Antony Lee 閱讀(458) 評(píng)論(1)  編輯  收藏 所屬分類: Python學(xué)習(xí)筆記

          FeedBack:
          # re: Core Python Programming 學(xué)習(xí)筆記6 - Mapping and Set
          2012-03-07 12:56 | 編程筆記
          剛好在學(xué)python. 謝謝分享!  回復(fù)  更多評(píng)論
            

          <2012年3月>
          26272829123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 广安市| 即墨市| 柯坪县| 酒泉市| 根河市| 汨罗市| 汝城县| 台江县| 曲靖市| 南充市| 北安市| 石狮市| 芦溪县| 乌鲁木齐市| 塔河县| 东光县| 碌曲县| 桓台县| 重庆市| 临澧县| 噶尔县| 增城市| 龙里县| 武川县| 靖边县| 北京市| 如东县| 平顶山市| 织金县| 凉城县| 龙海市| 常宁市| 来宾市| 紫阳县| 始兴县| 开原市| 涿州市| 福泉市| 东台市| 长武县| 石台县|