python - 在 python 中创建基于运算符优先级的字典
问题描述
我是一个 Python 初学者,最近我研究了 Python 中的数据结构,即列表、元组、字典,所有这些爵士乐。现在,作为一个小小的学习练习,我想使用 Shunting Yard 算法编写一个中缀到后缀的转换器。现在,我以前用 C 语言编写过这个程序,为了获得运算符优先级,我只定义了一个使用 switch 语句返回令牌优先级的函数。在这里,我不知所措,因为 switch 语句不存在。丑陋的解决方案是做同样的事情,但是使用 elif 语句,这是我最后的手段,但是,有没有更优雅的使用字典的解决方案?
现在,我的字典看起来像这样:
priorities = {1: ('+', '-'), 2: ('*', '/'), 3: '^'}
如您所见,多个运算符具有相同的优先级,我的问题是,我如何知道使用此结构的任何给定令牌的优先级?如果我的标记是'^',那很容易,只需优先级['^'],但如果它是任何其他运算符?如何将它们与包含它的元组相关联?诸如优先级['+']之类的东西?
解决方案
为什么不反转字典?
{'^': 3, '*': 2, '/': 2, '+':1, '-':1}
推荐阅读
- c++ - 为什么在一个类的实例中转换一个变量也会在父类的另一个实例中转换它?
- mongodb - 带有字段存在检查的 MongoDB 项目
- node.js - Node js 和 mongodb 连接服务器失败 [70.32.xx.xx:27017
- c# - C# 核心 - Task.Wait(int Timeout) 未按预期等待
- python - Pyspark,先知,熊猫 UDF - [8906 行 x 3 列] 类型
. 对于列文字,使用 ' - axios - 如何使用 Axios 调用多个请求并使用 URL 数组连接答案
- swift - 斯威夫特 | macOS | 用 ChangeCount 上的新 NSPasteboard 内容更新 var
- ios - 在 iOS 上使用 PDFKit.PDFView 打开 PDF
- python - 使用 BeautifulSoup 在 Python 上不断变化的值打印为“SYNCHRONIZING”
- javascript - 递归:在变量中存储多个值