對映型別物件裡雜湊值(鍵,key)和指向的物件(值,value)是一對多的關係。
>>> dict1 =
>>> dict1 = {}
>>> dict2 =
>>> dict1, dict2
({}, )
>>> fdict = dict(['x', 1], ['y', 2])
traceback (most recent call last):
file "", line 1, in typeerror: dict expected at most 1 arguments, got 2
dict expected at most 1 arguments, got 2
>>> fdict = dict((['x', 1], ['y', 2]))
>>> fdict
python 2.2 起可以用工廠函式dict()來建立字典。從python 2.3 起,可以用內建方法fromkeys() 來建立乙個「預設」字典,字典中的元素具有相同的值(若沒有給出,則為none):
>>> ddict = {}.fromkeys(('x', 'y'), 1)
>>> ddict
>>> edict = {}.fromkeys(('a', 'b'))
>>> edict
>>> for key in dict2:
... print 'key=%s, value=%s' % (key, dict2[key])
key=name, value=earth
key=port, value=80
>>> dict2['name']
'earth'
>>> dict2['name'] = 'venus'
>>> dict2['port'] = '88'
>>> dict2['arch'] = 'sunos'
>>> dict2
>>> print 'host %(name)s is running on port %(port)s' %dict2
host venus is running on port 88
1、字典的鍵查詢操作符()
2、成員關係操作(in, not in)
字典的比較:首先是字典的大小,然後是鍵,最後是值。
dict() 不提供引數,生成空字典。若引數是另乙個字典,dict()則會從存在的字典裡複製內容來生成新的字典。新生成的字典是原來的淺複製版本,但是速度比字典內建方法copy() 慢。
len()
hash() 判斷某個物件是否可以作為字典的鍵。
dict.clear() dict clear() dict.fromkeys(seq, val=none) dict.get(key, default=none) dict.has_key(key) dict.items() dict.keys() dict.iter*()---
dict.pop(key, [,default]) dict.setdefault(key, default=none) dict.update(dict2) dict.values()
當有鍵發生衝突,取最後的賦值。
所有的不可變物件都是可雜湊的。值相等的數字表示相同的鍵,比如 1 和 1.0 的雜湊值相同。
集合物件是一組無序排列的可雜湊的值。集合成員可以作為字典的鍵。
>>> s = set('cheeseshop')
>>> s
set(['c', 'e', 'h', 'o', 'p', 's'])
>>> t = frozenset('bookshop')
>>> t
frozenset(['b', 'h', 'k', 'o', 'p', 's'])
>>> len(s)
6>>> len(s) == len(t)
true
>>> 'k' in s
false
>>> 'k' in t
true
>>> for i in t:
... print ibh
kops
>>> s.add('x')
>>> s
set(['c', 'e', 'h', 'o', 'p', 's', 'x'])
>>> s.update('update')
>>> s
set(['a', 'c', 'e', 'd', 'h', 'o', 'p', 's', 'u', 't', 'x'])
>>> s.remove('x')
>>> s
set(['a', 'c', 'e', 'd', 'h', 'o', 'p', 's', 'u', 't'])
>>> s -= set('update')
>>> s
set(['c', 'h', 'o', 's'])
>>> del s
>>> s
traceback (most recent call last):
file "", line 1, in nameerror: name 's' is not defined
name 's' is not defined
1、 in , not in
2、 == , !=
3、<, <= , > , >=
1、 聯合 (|),有乙個等價的方法 union()
>>> s | t
set(['c', 'b', 'e', 'h', 'k', 'o', 'p', 's'])
>>> s.union(t)
set(['c', 'b', 'e', 'h', 'k', 'o', 'p', 's'])
2、交集(&),有乙個等價的方法, intersection()
>>> s & t
set(['h', 's', 'o', 'p'])
>>> s.intersection(t)
set(['h', 's', 'o', 'p'])
3、差補/相對補集(-)。 只屬於s 而不屬於 t 的集合
>>> s - t
set(['c', 'e'])
>>> s.difference(t)
set(['c', 'e'])
4、對稱差分(^)。 這個集合中的元素只能屬於s或者只能屬於t。
>>> s ^ t
set(['b', 'e', 'k', 'c'])
>>> s.symmetric_difference(t)
set(['b', 'e', 'k', 'c'])
5、混合集合型別操作
s是可變集合,t是乙個不可變集合,s在左邊,產生的結果仍然是可變集合。但是反過來結果就不一樣了。
>>> t | s
frozenset(['c', 'b', 'e', 'h', 'k', 'o', 'p', 's'])
>>> t ^ s
frozenset(['c', 'b', 'e', 'k'])
>>> t - s
frozenset(['k', 'b'])
|= 新增成員,等價於 update()
&= 保留與其他集合的共有成員
-= 保留乙個集合中除了另乙個集合中的元素之後剩下的元素
^= 返回乙個僅包含原來兩個集合中其中乙個集合的元素
標準型別函式 len()
集合型別工廠函式 set() frozenset()
很多內建方法和操作符時幾乎等價的。但是,當使用操作符時,操作符兩邊的運算元必須是集合。但是使用內建方法時,物件也可以是迭代型別的。
第7章 映像和集合型別
7.1 對映型別 字典 字典是python語言中唯一的對映型別。乙個字典物件是可變的,它是乙個容器型別,能儲存任意個數的python物件,其中也包括其他容器型別。字典型別和序列型別容器類的區別是儲存和訪問資料的方式不同。序列型別只用數字型別的鍵。對映型別也可以用其他物件型別做鍵,一般常見的是用字串做...
第7章 映像和集合型別 3
7.6 集合型別 集合物件是一組無序排列的可雜湊的值。集合成員可以做字典中的鍵。集合支援in和not in操作符檢查成員,由len 內建函式得到集合的基數,用for迴圈迭代集合的成員。但因為集合本身是無序的,所以不可以為集合建立索引或執行切片操作,也沒有鍵可用來獲取集合中元素的值。集合有兩種不同的型...
python核心程式設計
文件字串 應該多用,help 的作用就是把builtin的函式的文件字串取出然後列印出來。1 usr bin python 2 def printmax a,b 3 print max of two int numbers 4 x int a 5 y int b 6 if x y 7 print x...