问题标签 [dictview]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 为什么 dict 与 dict.keys() 联合返回一个集合?
正如我最初预期的那样, adict
和 a的并集set
给出TypeError
:
然而,令人惊讶的是, a和的dict
并集dict.keys()
返回 a set
:
set.union(dict)
也有这种行为:
但set | dict
没有,并且行为就像dict | set
:
这里发生了什么?为什么在某些情况下允许使用 dict 和 set 的并集,但在其他情况下不允许,为什么在允许的情况下返回一组键?
python - 为什么 .values() 和 .keys() 被认为是 O(1)?
无法找到足够可靠的理由来解释为什么.values()和.keys()等字典函数在大 O 表示法中被认为是O(1) 。(不确定.items()是否也被认为是 O(1) )
python - 为什么 set 运算符适用于 dict_key 视图对象而不适用于等效的 set 方法?
编辑:可能重复。只有在发布此问题并查看“相关问题”之后,我才能找到为什么在类似集合的对象上不支持像 .intersection() 这样的集合方法?,这个问题可能足够相似,可以重复。
我试图查看字典中的键是否是集合的子集,并且遇到了dict_keys
视图对象和集合方法/运算符的一些令人困惑的行为。
集合和视图之间的区别指出:
只有 dict.keys() 字典视图始终是一个集合(它的行为类似于一个集合,但具有字典的实时视图)
https://docs.python.org/3/library/stdtypes.html#dictionary-view-objects文档指出
键视图类似于集合,因为它们的条目是唯一且可散列的。... 对于类似集合的视图,为抽象基类 collections.abc.Set 定义的所有操作都可用(例如,==、< 或 ^)。
并且https://docs.python.org/2/library/stdtypes.html#set设置类型文档意味着运算符(<=、| 等)等同于方法.issubset()
等union()
。
然而,以下代码并未反映这些断言:
s.issuperset(dic.keys())
但是确实返回True
。
当所有迹象都表明 .issubset() 方法可以工作时,为什么会出现分散行为?