现在,我正在尝试对汇编程序进行编码,但我不断收到此错误:
追溯(最近一次通话):
文件“ /Users/Douglas/Documents/NeWS.py”,第44行
如果registerTable [item]中的项目:
KeyError:“ LD”
我目前有以下代码:
functionTable = {"ADD":"00",
"SUB":"01",
"LD" :"10"}
registerTable = {"R0":"00",
"R1":"00",
"R2":"00",
"R3":"00"}
accumulatorTable = {"A" :"00",
"B" :"10",
"A+B":"11"}
conditionTable = {"JH":"1"}
valueTable = {"0":"0000",
"1":"0001",
"2":"0010",
"3":"0011",
"4":"0100",
"5":"0101",
"6":"0110",
"7":"0111",
"8":"1000",
"9":"1001",
"10":"1010",
"11":"1011",
"12":"1100",
"13":"1101",
"14":"1110",
"15":"1111"}
source = "LD R3 15"
newS = source.split(" ")
for item in newS:
if item in functionTable[item]:
functionField = functionTable[item]
else:
functionField = "00"
if item in registerTable[item]:
registerField = registerTable[item]
else:
registerField = "00"
print(functionField + registerField)
感谢帮助。
您通常使用.get
默认值
get(key[, default])
如果key在字典中,则返回key的值,否则返回默认值。如果未提供default,则默认为None,因此此方法永远不会引发KeyError。
因此,当您使用get
循环时,将如下所示:
for item in newS:
functionField = functionTable.get(item, "00")
registerField = registerTable.get(item, "00")
print(functionField + registerField)
打印:
1000
0000
0000
如果要显式检查键是否在字典中,则必须检查键是否在字典中(无索引!)。
例如:
if item in functionTable: # checks if "item" is a *key* in the dict "functionTable"
functionField = functionTable[item] # store the *value* for the *key* "item"
else:
functionField = "00"
但是该get
方法使代码更短,更快,因此我实际上不会使用后一种方法。只是要指出为什么您的代码失败。
问题内容: 我听说可以通过避免字典查找来加快对象的速度。我的困惑来自Python是一种动态语言。在静态语言中,我们通过进行编译时优化将索引保存在我们运行的指令中,从而避免了字典查找。 现在,在Python中,可以很容易地成为另一个具有字典或一组不同属性的对象。看来我们仍然需要进行字典查找- 唯一的区别似乎是我们只需要为该类使用一个字典,而不是为每个对象使用字典。 有了这种理性, 如何避免字典查找?
问题内容: 这看起来很丑。可选选项的优点在这里完全消失了。我读到应该使用或代替。但是,如果我更换每个吸气剂,真的有好处吗? 与 您知道这里的一些常见或最佳做法吗? 问题答案: 您可以使用 关键是仅在可选函数不为空时才评估映射函数,否则结果将保留为空。如果可选为空,将返回。
我使用的是一个包含DATETIME列的SQLite数据库。jOOQ default将日期时间列绑定到java。sql。时间戳。查询包含DATETIME列的表会导致每列出现NumberFormatException(已处理)。 我使用jOOQ 3.11.9。 异常在parse方法,当它第一次尝试将时间戳字符串值转换为数字时。 查看和DefaultTimestampBinding方法时,时间戳总是ge
我一直收到NoClassDefoundError错误。我试图使用JavaMail API发送电子邮件,但当我使用SMTPMessage类创建Message实例时发生错误。 我知道我需要激活库,但它还是不起作用。 错误发生在这段代码的第一行。 堆栈跟踪
问题内容: 我正在尝试通过从客户端向服务器发送密钥和随机数来认证用户。 我的代码未向我显示客户端的响应。执行下面的代码时,我得到了一个空指针异常。 问题答案: 解决大多数问题的固定步骤: 阅读堆栈跟踪以确定哪一行代码引发NPE 在该行代码处设置一个断点 使用调试器,在遇到断点时,确定该行中的对象引用是 弄清楚为什么引用该文件(到目前为止,这是唯一实际的困难部分) 解决根本原因(也可能很困难)
问题内容: 我有两个简单的Java代码。第一个将恒定功率定义为power = a.pow(b); 第二个将恒定功率定义为power = BigInteger.ONE.shiftLeft(b) 在命令行中设置内存标志- Xmx1024m,第一个代码可以正常工作,但是第二个代码却出现错误:java.lang.OutOfMemoryError:Java堆空间 我的问题:我应该在第二个代码中更改什么以避免