當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python dict用法及代碼示例


用法:

class dict(**kwargs)
class dict(mapping, **kwargs)
class dict(iterable, **kwargs)

返回一個從可選位置參數和一組可能為空的關鍵字參數初始化的新字典。

可以通過多種方式創建字典:

  • 在大括號內使用逗號分隔的 key: value 對列表:{'jack': 4098, 'sjoerd': 4127}{4098: 'jack', 4127: 'sjoerd'}
  • 使用字典理解:{} , {x: x ** 2 for x in range(10)}
  • 使用類型構造函數:dict() , dict([('foo', 100), ('bar', 200)]) , dict(foo=100, bar=200)

如果沒有給出位置參數,則創建一個空字典。如果給定位置參數並且它是映射對象,則使用與映射對象相同的鍵值對創建字典。否則,位置參數必須是可迭代對象。可迭代對象中的每個項目本身必須是恰好具有兩個對象的可迭代對象。每個項目的第一個對象成為新字典中的鍵,第二個對象成為相應的值。如果一個鍵出現多次,則該鍵的最後一個值將成為新字典中的對應值。

如果給出了關鍵字參數,則將關鍵字參數及其值添加到從位置參數創建的字典中。如果要添加的鍵已經存在,則關鍵字參數的值將替換位置參數的值。

為了說明,以下示例都返回一個等於 {"one": 1, "two": 2, "three": 3} 的字典:

>>> a = dict(one=1, two=2, three=3)
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> e = dict({'three': 3, 'one': 1, 'two': 2})
>>> f = dict({'one': 1, 'three': 3}, two=2)
>>> a == b == c == d == e == f
True

在第一個示例中提供關鍵字參數僅適用於作為有效 Python 標識符的鍵。否則,可以使用任何有效的 key 。

這些是字典支持的操作(因此,自定義映射類型也應該支持):

list(d)

返回字典 d 中使用的所有鍵的列表。

len(d)

返回字典 d 中的項目數。

d[key]

使用鍵 key 返回 d 的項目。如果 key 不在Map中,則引發 KeyError

如果 dict 的子類定義了方法 __missing__() 並且 key 不存在,則 d[key] 操作使用鍵 key 作為參數調用該方法。然後d[key] 操作返回或引發__missing__(key) 調用返回或引發的任何內容。沒有其他操作或方法調用 __missing__() 。如果未定義__missing__(),則會引發KeyError__missing__() 必須是方法;它不能是實例變量:

>>> class Counter(dict):
...     def __missing__(self, key):
...         return 0
>>> c = Counter()
>>> c['red']
0
>>> c['red'] += 1
>>> c['red']
1

上麵的示例顯示了 collections.Counter 的部分實現。 collections.defaultdict 使用了不同的 __missing__ 方法。

d[key] = value

d[key] 設置為 value

del d[key]

d 中刪除 d[key] 。如果 key 不在Map中,則引發 KeyError

key in d

如果 d 有鍵 key ,則返回 True ,否則返回 False

key not in d

等效於 not key in d

iter(d)

返回字典鍵的迭代器。這是 iter(d.keys()) 的快捷方式。

reversed(d)

在字典的鍵上返回一個反向迭代器。這是 reversed(d.keys()) 的快捷方式。

3.8 版中的新函數。

d | other

使用合並的 dother 的鍵和值創建一個新字典,它們必須都是字典。當dother共享 key 時,other的值優先。

3.9 版中的新函數。

d |= other

使用來自 other 的鍵和值更新字典 d ,這可能是鍵/值對的映射或迭代。當dother共享 key 時,other的值優先。

3.9 版中的新函數。

字典比較相等當且僅當它們具有相同的 (key, value) 對(無論順序如何)。訂單比較('='、'>')引發 TypeError

字典保留插入順序。請注意,更新 key 不會影響順序。刪除後添加的鍵插入到最後。

>>> d = {"one": 1, "two": 2, "three": 3, "four": 4}
>>> d
{'one': 1, 'two': 2, 'three': 3, 'four': 4}
>>> list(d)
['one', 'two', 'three', 'four']
>>> list(d.values())
[1, 2, 3, 4]
>>> d["one"] = 42
>>> d
{'one': 42, 'two': 2, 'three': 3, 'four': 4}
>>> del d["two"]
>>> d["two"] = None
>>> d
{'one': 42, 'three': 3, 'four': 4, 'two': None}

在 3.7 版中更改:字典順序保證為插入順序。這種行為是 CPython 3.6 的實現細節。

字典和字典視圖是可逆的。

>>> d = {"one": 1, "two": 2, "three": 3, "four": 4}
>>> d
{'one': 1, 'two': 2, 'three': 3, 'four': 4}
>>> list(reversed(d))
['four', 'three', 'two', 'one']
>>> list(reversed(d.values()))
[4, 3, 2, 1]
>>> list(reversed(d.items()))
[('four', 4), ('three', 3), ('two', 2), ('one', 1)]

在 3.8 版中更改:字典現在是可逆的。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 dict。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。