首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python名称错误' Name‘未在嵌套字典中定义

Python名称错误' Name‘未在嵌套字典中定义
EN

Stack Overflow用户
提问于 2019-12-21 01:25:37
回答 2查看 365关注 0票数 0

我正在通过嵌套字典创建决策树,但会出现以下错误

11:{‘q’:‘咖啡还是茶?’,'A':{ ' Coffee‘:咖啡,'Tea':茶}},NameError:名称’Coffee‘未定义。当我注释掉字典11时,我会遇到这个错误

12:{‘Q’:‘冰咖啡还是冰茶?’,'A':{‘冰咖啡:’:IcedCoffee,‘冰茶’:IcedTea}},NameError:名称'IcedCoffee‘未定义

我在前面的‘value dict?’中错误地引用了字典?

代码语言:javascript
复制
#Decision tree implemented as nested linked dictionary
decision_tree_1 = {


0:{'Q':'Would you like to order?', 'A':{'Yes': 1, 'No': 2}},
1:{'Q':'Category ?', 'A':{'Hot Drink': 11, 'Cold Drink': 12,'Food': 13}},
11:{'Q':'Coffee or tea?', 'A':{'Coffee': Coffee, 'Tea': Tea}},
12:{'Q':'Iced Coffee or Iced Tea?', 'A': {'IcedCoffee:': IcedCoffee, 'Iced Tea': IcedTea}},
13:{'Q':'Sandwich or Pastry', 'A': {'Sandwich': Sandwich, 'Pastry': Pastry}},

S:{'Q':'What size?', 'A':{'Small': S1, 'Medium': M,'Large': L}},

Q:{'Q':'What quantity?', 'A':{'1': One, '2': Two,'3': Three}},

Coffee:{'Q':'Coffee', 'A':{}},
Tea:{'Q':'Tea', 'A':{}},
IcedCoffee:{'Q':'Iced Coffee', 'A':{}},
IcedTea:{'Q':'Iced Tea', 'A':{}},
Sandwich:{'Q':'Sandwich', 'A':{}},
Pastry:{'Q':'Pastry', 'A':{}},

S1:{'Q':'Small', 'A':{}},
M:{'Q':'Medium', 'A':{}},
L:{'Q':'Large', 'A':{}},

One:{'Q':'1', 'A':{}},
Two:{'Q':'2', 'A':{}},
Three:{'Q':'3', 'A':{}},

}
EN

回答 2

Stack Overflow用户

发布于 2019-12-21 01:32:37

只有当它们是赋值语句的一部分,或者之前已经绑定到某个值时,才是有效的Coffee表达式。

我认为你在这里试图构建的那种自引用结构并不能很好地被带有字符串键的python字典所支持。您可能应该考虑创建某种类型的DecisionTree类,以便它的节点可以按您想要的方式相互引用。

票数 2
EN

Stack Overflow用户

发布于 2019-12-21 01:36:01

以下是决策树的一个子集,缩进效果更好,仅显示与咖啡相关的内容:

代码语言:javascript
复制
dt = {
  11:{
    'Q':'Coffee or tea?', 
    'A':{'Coffee': Coffee, 'Tea': Tea}
  },
  Coffee:{
    'Q':'Coffee', 
    'A':{}
  }
}

不幸的是,这将得到一个NameError,因为当您第一次在第4行使用Coffee时,您还没有定义它。然后,您尝试在第6行定义它,但出于同样的原因,这也会给出一个NameError

您可以通过引用第二个Coffee来定义某些内容,但我认为您应该将咖啡定义移到决策树之外。

代码语言:javascript
复制
coffee = {
  'Q':'Coffee', 
  'A':{}
}
tea = ...

dt = {
  11:{
    'Q':'Coffee or tea?', 
    'A':{'Coffee': coffee, 'Tea': tea}
  },
  ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59429196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档