3

我想使用一组布尔值作为字典的键,因此(天气 == 晴天和温度 == 温暖)将是 11 或 True,True 而(天气 == 晴天和天气 == 寒冷)将是 10 和(天气 == 多云和天气 == 寒冷) True,False 将是 00 其中服装 = {11:"shorts", 10:"jeans", 00:"jacket"} 有没有办法做到这一点?我认为它可能需要位操作,并且我正在尝试尽可能快地保持操作时间。

4

2 回答 2

9

如果您实际上不需要对各个条件执行按位运算(即,您不需要将两个条件与/或),则仅使用布尔元组作为键可能更简单:

clothing = {
    (True, True): "shorts",
    (True, False): "jeans",
    (False, False): "jacket"
}
于 2013-04-27T21:05:32.800 回答
4

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

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

weather = something()

print(clothing[ weather & (cold|cloudy) ])

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

于 2013-04-27T21:03:19.620 回答