dict 是一种内置类型,表示关联映射或字典。字典支持使用 d[k]
编制索引,支持使用 k in d
进行键成员资格测试;两项操作都需要恒定的时间。未冻结的字典是可变的,可以通过分配给 d[k]
或调用特定方法来更新。字典是可迭代的;迭代会产生按插入顺序的键序列。更新与现有键关联的值不会影响迭代顺序,但移除键并重新插入键会影响迭代顺序。
d = {0: 0, 2: 2, 1: 1} [k for k in d] # [0, 2, 1] d.pop(2) d[0], d[2] = "a", "b" 0 in d, "a" in d # (True, False) [(k, v) for k, v in d.items()] # [(0, "a"), (1, 1), (2, "b")]
您可以通过以下四种方法构建字典:
- 字典表达式
{k: v, ...}
会生成一个包含指定键值对条目的新字典,这些条目会按其在表达式中显示的顺序插入。如果任何两个键表达式的计算结果相同,则评估会失败。 - 字典理解
{k: v for vars in seq}
会生成一个新的字典,每个键值对都将按循环迭代顺序插入其中。允许重复:给定键的首次插入决定了其在序列中的位置,而最后一次插入决定了其关联的值。{k: v for k, v in (("a", 0), ("b", 1), ("a", 2))} # {"a": 2, "b": 1} {i: 2*i for i in range(3)} # {0: 0, 1: 2, 2: 4}
- 调用内置 dict 函数可返回一个字典,其中包含指定条目,这些条目按参数顺序插入,位置参数位于命名之前。与推理一样,允许使用重复键。
- 并集表达式
x | y
会通过组合两个现有字典来生成一个新字典。如果这两个字典有共同的键k
,则右侧字典中该键的值(即y[k]
)胜出。并集运算符的|=
变体会修改就位的字典。示例:d = {"foo": "FOO", "bar": "BAR"} | {"foo": "FOO2", "baz": "BAZ"} # d == {"foo": "FOO2", "bar": "BAR", "baz": "BAZ"} d = {"a": 1, "b": 2} d |= {"b": 3, "c": 4} # d == {"a": 1, "b": 3, "c": 4}
成员
清除
None
dict.clear()
移除字典中的所有内容。
get
unknown dict.get(key, default=None)如果
key
位于字典中,则返回 key
的值,否则返回 default
。如果未指定 default
,则默认为 None
,以便此方法永远不会抛出错误。
参数
参数 | 说明 |
---|---|
key
|
必需 要查找的键。 |
default
|
默认值为 None 找不到键时使用的默认值(而不是 None)。 |
项目
list dict.items()返回键值对元组列表:
{2: "a", 4: "b", 1: "c"}.items() == [(2, "a"), (4, "b"), (1, "c")]
密钥
list dict.keys()返回键列表:
{2: "a", 4: "b", 1: "c"}.keys() == [2, 4, 1]
pop
unknown dict.pop(key, default=unbound)从字典中移除
key
,并返回关联值。如果未找到具有该键的条目,则不移除任何内容,并返回指定的 default
值;如果未指定默认值,则会失败。
参数
参数 | 说明 |
---|---|
key
|
必需 键。 |
default
|
default 为 unbound 如果键不存在,则为默认值。 |
popitem
tuple dict.popitem()从字典中移除并返回第一个
(key, value)
对。popitem
非常适合对字典进行破坏性迭代,这在集合算法中经常用到。如果字典为空,则 popitem
调用会失败。
setdefault
unknown dict.setdefault(key, default=None)如果
key
在字典中,则返回其值。如果没有,则插入值为 default
的键,并返回 default
。default
默认值为 None
。
参数
参数 | 说明 |
---|---|
key
|
必需 键。 |
default
|
默认值为 None 如果不存在该键,则返回默认值。 |
update
None
dict.update(pairs=[], **kwargs)
首先使用可选的位置参数 pairs
更新字典,然后使用可选的关键字参数更新
如果存在位置参数,该参数必须是 dict、iterable 或 None。
如果它是字典,则其键值对会插入此字典。如果它是可迭代的,则必须提供一系列对(或长度为 2 的其他可迭代对象),每个对都被视为要插入的键值对。每个关键字参数 name=value
都会将名称/值对插入此字典。
参数
参数 | 说明 |
---|---|
pairs
|
默认值为 [] 字典或条目列表。条目必须是正好包含两个元素(键、值)的元组或列表。 |
kwargs
|
必需 其他条目的字典。 |
值
list dict.values()返回值列表:
{2: "a", 4: "b", 1: "c"}.values() == ["a", "b", "c"]