在字典中使用范围作为键

Using ranges as keys in dictionaries

我正在尝试使用 Python 中的词典作为切换大小写的替代方法。我想使用一系列值作为我字典中的键。我有类似于以下代码的内容:

dispatcher = {
    0 < col_value <= .5: "avg",
    .5 < col_value <= .9: "value",
}

for col in self.missing_ratios_dict:

    self.to_do_list[col] = dispatcher.get(self.missing_ratios_dict[col], "drop")

missing_ratios_dict 是一个字典,其中包含 "Age" : .199、"Name": 0.0 等对。

我想要做的是,如果列的值介于 0 和 .5 之间,则将 "avg" 添加到我的 to_do_list,如果它介于 .5 和 .9 之间,则将 "value" 添加到我的 to_do_list,否则将 "drop" 添加到我的 to_do_list。

目前它实际做的是在值为 0.0 时添加 "value",否则添加 "drop"。

dict 不能将可散列范围作为键。但是,您可以创建一个表示 tuple 形式的范围的键,但它没有用,因为您不能直接调用 dict.get(x) 从键中获取值,元组为 (y1, y2)(其中 y1 < x 键检查值是否在任何范围内。

我建议您创建一个这样的函数来查找类别:

def get_type(value):
    category = None
    if 0 < value < 0.5:
         category =  "avg"
    elif 0.5 <= value < 0.8:
         category = "good"
    return category