我有时会收到如下布尔词典的字典;
d = {'a': True, 'b': False, 'c': False}
我将其用作所有必须打开(True
)的开关集合,以便进行某些操作。在迭代时,这些开关然后被翻转,例如
for char in text:
if char == '0':
d['a'] = not d['a'] # State of 'a' is switched
...
上面两次'a'
被抬起来的事实困扰着我。我是按1
和-1
来表示交换机的值,我可以像d['a'] *= -1
一样进行切换,只引用d['a']
一次。
理想情况下,Python会为我提供就地“非分配”操作符。
答案 0 :(得分:1)
我找到了我的操作员!可以使用按位XOR赋值运算符
d['a'] ^= True
我还没有理解按位运算符应该如何与常规Python类型一起使用,但我猜它们的工作方式与布尔值相同。