字典的python布尔键

Eas*_*led 3 python dictionary boolean-logic boolean

我想使用一组布尔值作为词典的关键因此(天气= =晴天和温度= =温暖)将是11或真,真(而天气= =晴天和天气==冷)将是10和(天气==阴天和天气==冷)真的,假的是00,衣服= {11:"短裤",10:"牛仔裤",00:"夹克"}有没有办法做到这一点?我认为它可能需要位操作,我试图尽可能快地保持这个操作时间.

Bre*_*arn 8

如果你实际上不需要对各个条件进行按位运算(即,你不需要和/或两个条件在一起),那么使用一个布尔元组作为关键字可能更简单:

clothing = {
    (True, True): "shorts",
    (True, False): "jeans",
    (False, False): "jacket"
}
Run Code Online (Sandbox Code Playgroud)


Ela*_*zar 5

您可以使用按位或 ( |) 运算符:

sunny = 0
cloudy = 1
cold = 2
clothing = { (cold|cloudy) :"shorts", cold:"jeans", sunny:"jacket"}

weather = something()

print(clothing[ weather & (cold|cloudy) ])
Run Code Online (Sandbox Code Playgroud)

但@BrenBarn 建议的元组版本更好。