【问题标题】:Using ranges as keys in dictionaries [duplicate]使用范围作为字典中的键[重复]
【发布时间】:2017-03-23 22:55:27
【问题描述】:

我正在尝试在 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”:0.199、“Name”:0.0 等对。

我想要做的是如果列的值在 0 到 .5 之间添加“avg”到我的 to_do_list,如果它在 .5 到 .9 之间添加“值”到我的 to_do_list,否则将“drop”添加到我的 to_do_list。

目前它实际做的是如果值为 0.0 则添加“值”,否则添加“删除”。

【问题讨论】:

    标签: python dictionary range equality


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-09
      • 2013-04-22
      • 2017-05-20
      • 1970-01-01
      • 2012-02-20
      • 2016-01-07
      • 2012-11-07
      • 1970-01-01
      相关资源
      最近更新 更多