字典
字典
字典 简介 创建字典 操作 python目前仅有一种标准映射类型 属于可变对象 mapping 对象会将 hashable 值映射到任意对象 字典的键几乎可以为任何可hash的值 比较结果相等的值(如 1, 1.0 和 True 等hash值相同)会被视做同一键 hashable(可哈希) 一个对象如果具有在其生命期内绝不改变的哈希值(它需要有 __hash__() 方法), 并可以同其他对象进行比较(它需要有 __eq__() 方法)就 被称为 可哈希 对象 。 可哈 希对象必须具有相同的哈希值比较结果才会相等。 可哈希性使得对象能够作为字典键或集合成员使用,因为这些数据结构要在内部使用 哈希值。 不可变容器仅当它们的元素 均为 可哈希时才是可哈希的 用户定义类的实例对象默认是可哈希的。 它们在比较时一定不相同(除非是与自己 比较),它们的哈希值的生成是基于它们的 id()。 使用花括号内以逗号分隔 键: 值 对的方式: {'jack': 4098, 'sjoerd': 4127} 使用字典推导式: {x: x ** 2 for x in range(10)} 使用类型构造器 dict() 空字典 dict([('foo', 100), ('bar', 200)]) dict(foo=100, bar=200) list(d) 返回字典 d 中使用的所有 的列表。 len(d) 返回字典 d 中的项数。 d[key] 返回 d 中以 key 为键的项。 如果映射中不存在 key 则会引发 KeyError。 如果字典的子类定义了方法 __missing__() 并且 key 不存在,则 d[key] 操作将调用 该方法并附带键 key 作为参数 d[key] = value 将 d[key] 设为 value。 del d[key] 将 d[key] 从 d 中移除。 如果映射中不存在 key 则会引发 KeyError。 key in d 如果 d 中存在键 key 则返回 True,否则返回 False。 iter(d) 返回以 字典的键 为元素的迭代器。 这是 iter(d.keys()) 的快捷方式。 clear() 移除字典中的所有元素。 copy() 返回原字典的浅拷贝 get(key, default=None) 如果 key 存在于字典中则返回 key 的值,否则返回 default。 如果 default 未给出 则默认为 None,因而此方法绝不会引发 KeyError。 dict.fromkeys(iterable, value=None, /) 使用来自 iterable 的键创建一个新字典,并将键值设为 value。 items() keys() values() 返回由字典项 ((键, 值) 对) 组成的一个新视图 返回由 字典键 组成的一个新视图。 返回由字典值组成的一个新视图。 删除 pop(key [, default]) 如果 key 存在于字典中则将其移除并返回其值,否则返回 default。 如果 default 未 给出且 key 不存在于字典中,则会引发 KeyError。 popitem() 从字典中移除并返回一个 (键, 值) 对。 在 3.7 版本发生变更 采用 LIFO(后进先出) 顺序 以前会返回一个任意的键/值对。 reversed(d) 返回一个逆序获取 字典键 的迭代器。 这是 reversed(d.keys()) 的快捷方式。 获取 setdefault(key, default=None) 如果字典存在键 key ,返回它的值。如果不存在,插入值为 default 的键 key ,并 返回 default 。 default 默认为 None。 更新 update([other]) 使用来自 other 的键/值对更新字典,覆盖原有的键。 返回 None。 3.9新增 d | other d |= other 合并 d 和 other 中的键和值来创建一个新的字典,两者必须都是字典。当 d 和 other 有相同键时, other 的值优先 用 other 的键和值更新字典 d ,other 可以是 mapping 或 iterable 的键值对。当 d 和 other 有相同键时, other 的值优先。 比较 两个字典的比较当且仅当它们具有相同的 (键, 值) 对时才会相等(不考虑顺序)。 在 3.7 版本发生变更 字典顺序会确保为插入顺序。 此行为是自 3.6 版开始的 CPython 实现细节。3.6前 的字典是无序的。 在 3.8 版本发生变更 字典现在是可逆的。 字典视图 由 dict.keys(), dict.values() 和 dict.items() 所返回的对象是 视图对象。 字典改变时,视图也会相应改变。 len(dictview) 返回字典视图中的条目数。 iter(dictview) 返回字典中的键、值或项(以 (键, 值) 为元素的元组表示)的迭代器。 在添加或删除字典中的条目期间对视图进行迭代可能引发 RuntimeError 或者无法完 全迭代所有条目。 3.10新增 dictview.mapping 返回 types.MappingProxyType 对象,封装了字典视图指向的原始字典。 {k:v for k in list1 for v in list2}
posted on 2024-11-02 17:33  莫名丨其妙  阅读(2)  评论(0编辑  收藏  举报