繁体   English   中英

嵌套字典与二维数组进行比较

[英]Nested dictionary to compare against 2D array

所以我有这个嵌套字典

myDictionary = {'x_1 = cloudy': {'x_0 = high': True, 'x_0 = low': False}, 
               'x_1 = partly cloudy': False, 
                'x_1 = sunny': {'x_0 = high': False, 'x_0 = low': True}}

我还有一个二维数组

X_test = np.array([['low', 'sunny'],['high', 'sunny'], ['high', 'cloudy'], 
                  ['low', 'partly cloudy'],['low', 'cloudy']])

我正在尝试根据字典测试数组。 字典本质上是一个训练有素的决策树,这样:

  • 高 -> 多云 -> 真(雨)
  • 低 -> 晴天 -> 真(雨)

任何其他条件表示(无雨)例如,高 -> 部分多云 -> 假(无雨)

我写了这个 function 从上面得到所需的 output 但我在导航树和获取错误值方面有点失败。

def predict(x, d):
        for key, value in d.items():
            if type(value) is dict:
                if key.split(" = ")[1] in x:
                    return predict(x, value)
            else:
                return value
    
pred = [predict(x, tree) for x in X]

我如何浏览这本字典并检查上述条件? 感谢帮助。

我稍微简化了数据,以下工作

def predict(x, d):                                                                                                   
    if type(d[x[1]]) is not dict:                                                                                    
        return d[x[1]]                                                                                               
    if x[1] in d.keys():                                                                                             
        return d[x[1]][x[0]]

我用来代替myDictionary

tree = {'cloudy': {'high': True, 'low': False},                                                                      
        'partly cloudy': False,                                                                                      
        'sunny': {'high': False, 'low': True}}

我假设您从其他示例中获取代码,因为我发现这里的递归很复杂。 思维简单。

  • 如果您有一个值为字符串的键,则返回此
  • 否则返回嵌套字典的值。

暂无
暂无

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

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