首页 > 解决方案 > 在 python 中创建基于运算符优先级的字典

问题描述

我是一个 Python 初学者,最近我研究了 Python 中的数据结构,即列表、元组、字典,所有这些爵士乐。现在,作为一个小小的学习练习,我想使用 Shunting Yard 算法编写一个中缀到后缀的转换器。现在,我以前用 C 语言编写过这个程序,为了获得运算符优先级,我只定义了一个使用 switch 语句返回令牌优先级的函数。在这里,我不知所措,因为 switch 语句不存在。丑陋的解决方案是做同样的事情,但是使用 elif 语句,这是我最后的手段,但是,有没有更优雅的使用字典的解决方案?

现在,我的字典看起来像这样:

priorities = {1: ('+', '-'), 2: ('*', '/'), 3: '^'}

如您所见,多个运算符具有相同的优先级,我的问题是,我如何知道使用此结构的任何给定令牌的优先级?如果我的标记是'^',那很容易,只需优先级['^'],但如果它是任何其他运算符?如何将它们与包含它的元组相关联?诸如优先级['+']之类的东西?

标签: pythonstackoperators

解决方案


为什么不反转字典?

{'^': 3, '*': 2, '/': 2, '+':1, '-':1}

推荐阅读