字典

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。
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")]

构建字典有四种方法:

  1. 字典表达式 {k: v, ...} 会生成具有指定键值对的新字典,这些条目按它们在表达式中出现的顺序插入。如果任意两个键表达式产生的值相同,则评估失败。
  2. 字典理解 {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}
    
  3. 调用内置 dict 函数会返回一个包含指定条目的字典,这些条目按参数顺序插入,并在命名之前插入位置参数。与系统理解一样,允许使用重复的键。
  4. 联合表达式 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 required
要查找的键。
default default = None
如果找不到键,则使用默认值(而不是 None)。

items

list dict.items()

返回键值对元组列表:
{2: "a", 4: "b", 1: "c"}.items() == [(2, "a"), (4, "b"), (1, "c")]

keys

list dict.keys()

返回键列表:
{2: "a", 4: "b", 1: "c"}.keys() == [2, 4, 1]

弹出

unknown dict.pop(key, default=unbound)

从字典中移除 key,并返回相关值。如果未找到具有该键的条目,请移除任何内容并返回指定的 default 值;如果未指定默认值,则改为失败。

参数

参数 说明
key required
键。
default default = unbound
(如果未提供键)的默认值。

popitem

tuple dict.popitem()

移除并返回前 (key, value) 对。popitem 有助于对字典进行破坏性迭代,就像设置算法中常用的那样。如果字典是空的,则 popitem 调用将失败。

setdefault

unknown dict.setdefault(key, default=None)

如果字典中有 key,则返回其值。否则,插入值为 default 的键并返回 defaultdefault 默认为 None

参数

参数 说明
key required
键。
default default = None
(如果键不存在,则为默认值)。

更新

None dict.update(pairs=[], **kwargs)

首先使用可选的位置参数 pairs 更新字典,然后使用可选的关键字参数更新字典。如果位置参数存在,则它必须是字典、可迭代或无。 如果是字典,则其键值对将插入到此字典中。如果是可迭代对象,则必须提供一系列键值对(或其他长度为 2 的可迭代对象),每个键值对都被视为要插入的键值对。 每个关键字参数 name=value 都会将名称/值对插入此字典。

参数

参数 说明
pairs default = []
:字典或条目列表。条目必须是元组或列表,且仅包含两个元素:key、value。
kwargs required
其他条目的字典。

list dict.values()

返回值列表:
{2: "a", 4: "b", 1: "c"}.values() == ["a", "b", "c"]