让我们看下面的代码片段:
d = {1:1}
keys = d.keys()
print(keys & {1,2,3})# {1}
d[2] = 2
print(keys & {1,2,3}) # {1,2} # keys() is a view/reference
print({1,2}.issubset({1,2,3})) # True
print(keys.issubset({1,2,3})) # 'dict_keys' object has no attribute 'issubset'
在dictionary view objects的官方文件中提及:
键视图设置类似,因为它们的条目是唯一且可清除的。 ..然后这些设置操作可用(“其他”指的是 另一个视图或一组):[&,|,^,^]
如果键设置为类似,为什么对它们的设置操作仅限于这四个中缀操作。例如,为什么不允许像issuperset
或issubset
这样的无副作用操作?
答案 0 :(得分:6)
例如,为什么不允许使用
issubset
或>=
操作等无副作用的操作?
他们是;您只需使用<=
和print(keys <= {1, 2, 3})
运算符:
isdisjoint
他们还以方法形式支持print(keys.isdisjoint({1, 2, 3}))
,因为它没有运算符:
int64_t value1; int32_t value2;