繁体   English   中英

Python:就地“不”布尔值

[英]Python: In-place "not'ing" of booleans

我有时有一个像下面这样的布尔值字典;

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 会为我提供一个就地“非赋值”运算符。

我找到了我的接线员! 可以使用按位异或赋值运算符,

d['a'] ^= True

我还没有弄清楚应该如何将按位运算符用于一般 Python 类型,但我想它们在布尔值方面按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM