在 python 中创建基于运算符优先级的字典
Creating an operator-priority based dictionary in python
我是 python 初学者,最近我研究了 Python 中的数据结构,即列表、元组、字典等等。现在,作为一个小小的学习练习,我想使用调车场算法编写一个中缀到后缀的转换器。现在,我以前用 C 编写过这个程序,在那里,为了获得运算符优先级,我只定义了一个函数,该函数使用 switch 语句返回令牌的优先级。在这里,我不知所措,因为 switch 语句不存在。丑陋的解决方案是做同样的事情,但使用 elif 语句,这是我最后的选择,但是,有没有使用字典的更优雅的解决方案?
现在,我的字典是这样的:
priorities = {1: ('+', '-'), 2: ('*', '/'), 3: '^'}
如您所见,多个运算符具有相同的优先级,我的问题是,我如何知道使用此结构的任何给定令牌的优先级?如果我的 token 是 '^' 那很简单,只是 priorities['^'],但如果它是任何其他运算符呢?我如何将它们与包含它的元组相关联?类似 priorities['+']?
为什么不反转字典?
{'^': 3, '*': 2, '/': 2, '+':1, '-':1}
我是 python 初学者,最近我研究了 Python 中的数据结构,即列表、元组、字典等等。现在,作为一个小小的学习练习,我想使用调车场算法编写一个中缀到后缀的转换器。现在,我以前用 C 编写过这个程序,在那里,为了获得运算符优先级,我只定义了一个函数,该函数使用 switch 语句返回令牌的优先级。在这里,我不知所措,因为 switch 语句不存在。丑陋的解决方案是做同样的事情,但使用 elif 语句,这是我最后的选择,但是,有没有使用字典的更优雅的解决方案?
现在,我的字典是这样的:
priorities = {1: ('+', '-'), 2: ('*', '/'), 3: '^'}
如您所见,多个运算符具有相同的优先级,我的问题是,我如何知道使用此结构的任何给定令牌的优先级?如果我的 token 是 '^' 那很简单,只是 priorities['^'],但如果它是任何其他运算符呢?我如何将它们与包含它的元组相关联?类似 priorities['+']?
为什么不反转字典?
{'^': 3, '*': 2, '/': 2, '+':1, '-':1}