【发布时间】:2019-12-20 17:25:37
【问题描述】:
我正在通过嵌套字典创建决策树,但出现错误
11:{'Q':'咖啡还是茶?', 'A':{'Coffee': 咖啡, 'Tea': 茶}}, NameError:名称“咖啡”未定义。当我注释掉字典 11 时,我遇到了错误
12:{'Q':'冰咖啡还是冰茶?', 'A': {'IcedCoffee:': IcedCoffee, '冰茶': IcedTea}}, NameError: 名称“IcedCoffee”未定义
我错误地引用了前一个值字典中的字典?
#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':{}},
}
【问题讨论】:
-
嗯,它没有定义。那么你期待什么呢?
-
我没有在 Coffee:{'Q':'Coffee', 'A':{}}, 行中定义吗?
-
不,这不是变量,
dict键是可散列的对象,它们不会成为变量。事实上,这也会抛出一个NameError,只是在解析dict字面量的过程中还没有到达那个部分 -
你有
'IcedCoffee:',但我想应该是'Iced Coffee'。 -
您必须使用
Coffee = ...创建变量。使用Coffee:{'Q':'Coffee', 'A':{}}无法创建变量Coffee。您应该首先使用字符串"Coffee"而不是变量Coffee创建"Coffee":{'Q':'Coffee', 'A':{}},然后在其他地方使用decision_tree_1["Coffee"]- 即。'A':{'Coffee': decision_tree_1["Coffee"],`
标签: python python-3.x dictionary data-structures tree