会员
周边
众包
新闻
博问
闪存
赞助商
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
莫名丨其妙
菜鸟成长日记
博客园
首页
新随笔
联系
订阅
管理
字典
字典
字典
字典
简介
创建字典
操作
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}
Created With
MindMaster
posted on
2024-11-02 17:33
莫名丨其妙
阅读(
2
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部