1. 程式人生 > >Python-7-字典方法

Python-7-字典方法

關聯 none nbsp 優點 fromkeys 影響 names 使用 特殊

clear 刪除所有字典項 >>> d = {} >>> d[‘name‘] = ‘Gumby‘ >>> d[‘age‘] = 42 >>> d {‘age‘: 42, ‘name‘: ‘Gumby‘} >>> d.clear() >>> d {} 下面是第一個場景: >>> x = {} >>> y = x >>> x[‘key‘] = ‘value‘ >>> y {‘key‘: ‘value‘} >>> x = {} 這裏只是將x關聯到一個新的空間,並不修改原來的空間 >>> y {‘key‘: ‘value‘} 下面是第二個場景: >>> x = {} >>> y = x >>> x[‘key‘] = ‘value‘ >>> y {‘key‘: ‘value‘} >>> x.clear()這裏修改的是原來的空間 >>> y {} copy 返回一個與原字典相同的新字典 >>> x = {‘username‘: ‘admin‘, ‘machines‘: [‘foo‘, ‘bar‘, ‘baz‘]} >>> y = x.copy() >>> y[‘username‘] = ‘mlh‘ >>> y[‘machines‘].remove(‘bar‘) >>> y {‘username‘: ‘mlh‘, ‘machines‘: [‘foo‘, ‘baz‘]} >>> x {‘username‘: ‘admin‘, ‘machines‘: [‘foo‘, ‘baz‘]} 此方法的賦值為淺復制。替換副本中的值時(新值為新空間),原件不受影響。如果修改副本中的值(原地修改),原件也發生變化,因為原件指向的也是被修改的值。 為避免這種問題,一種辦法是執行深復制,可使用copy中的deepcopy >>> from copy import deepcopy >>> d = {} >>> d[‘names‘] = [‘Alfred‘, ‘Bertrand‘] >>> c = d.copy() >>> dc = deepcopy(d) >>> d[‘names‘].append(‘Clive‘) >>> c {‘names‘: [‘Alfred‘, ‘Bertrand‘, ‘Clive‘]} >>> dc {‘names‘: [‘Alfred‘, ‘Bertrand‘]} fromkeys 創建一個新字典,其中包含指定的鍵,每個鍵對應的值都是None >>> {}.fromkeys([‘name‘, ‘age‘]) {‘age‘: None, ‘name‘: None} 也可提供特定的值 >>> dict.fromkeys([‘name‘, ‘age‘], ‘(unknown)‘) {‘age‘: ‘(unknown)‘, ‘name‘: ‘(unknown)‘} get 如果訪問了字典中沒有的項,將引發錯誤,而get不會 >>> d = {} >>> print(d[‘name‘]) Traceback (most recent call last): File "<stdin>", line 1, in ? KeyError: ‘name‘ >>> print(d.get(‘name‘)) None 在沒有時也可以返回其它指定值 >>> d.get(‘name‘, ‘N/A‘) ‘N/A‘ 如果有要找的鍵,get與普通字典查找相同 >>> d[‘name‘] = ‘Eric‘ >>> d.get(‘name‘) ‘Eric‘ items 返回一個包含所有字典項的列表,其中每個元素都為(key, value)的形式。字典項在列表中的排列順序不確定 >>> d = {‘title‘: ‘Python Web Site‘, ‘url‘: ‘http://www.python.org‘, ‘spam‘: 0} >>> d.items() dict_items([(‘url‘, ‘http://www.python.org‘), (‘spam‘, 0), (‘title‘, ‘Python Web Site‘)]) 返回值屬於一種名為字典視圖的特殊類型 還可確定其長度以及對其執行成員資格檢查 >>> it = d.items() >>> len(it) 3 >>> (‘spam‘, 0) in it True 視圖的一個優點是不復制,它們始終是底層字典的反映,即便你修改了底層字典亦如此。 >>> d[‘spam‘] = 1 >>> (‘spam‘, 0) in it False >>> d[‘spam‘] = 0 >>> (‘spam‘, 0) in it True (永不復制,只是關聯) 如果你想將字典項復制到列表中,可以這樣: >>> list(d.items()) [(‘spam‘, 0), (‘title‘, ‘Python Web Site‘), (‘url‘, ‘http://www.python.org‘)] keys 返回一個字典視圖,包含字典中所有的鍵 >>> dict = {‘Name‘: ‘Runoob‘, ‘Age‘: 7} >>> dict.keys() dict_keys([‘Name‘, ‘Age‘]) >>> list(dict.keys()) # 轉換為列表 [‘Name‘, ‘Age‘] pop 獲取指定鍵的值並刪除指定鍵值對 >>> d = {‘x‘: 1, ‘y‘: 2} >>> d.pop(‘x‘) 1 >>> d {‘y‘: 2} popitem 隨機彈出一個字典項,因為字典項的順序是不確定的 setdefault >>> d = {} >>> d.setdefault(‘name‘, ‘N/A‘) ‘N/A‘ >>> d {‘name‘: ‘N/A‘} >>> d[‘name‘] = ‘Gumby‘ >>> d.setdefault(‘name‘, ‘N/A‘) ‘Gumby‘ >>> d {‘name‘: ‘Gumby‘} 指定的鍵不存在時,返回指定值並更新字典。存在就返回其值,字典不變 如果沒有指定值,默認為None >>> d = {} >>> print(d.setdefault(‘name‘)) None >>> d {‘name‘: None} update 使用一個字典來更新另一個字典 >>> d = { ... ‘title‘: ‘Python Web Site‘, ... ‘url‘: ‘http://www.python.org‘, ... ‘changed‘: ‘Mar 14 22:09:15 MET 2016‘ ... } >>> x = {‘title‘: ‘Python Language Website‘} >>> d.update(x) >>> d {‘url‘: ‘http://www.python.org‘, ‘changed‘: ‘Mar 14 22:09:15 MET 2016‘, ‘title‘: ‘Python Language Website‘} values 返回字典中的值組成的字典視圖 >>> d = {} >>> d[1] = 1 >>> d[2] = 2 >>> d[3] = 3 >>> d[4] = 1 >>> d.values() dict_values([1, 2, 3, 1])

Python-7-字典方法