Python 如何将dict打印到CLI应用程序并获得干净的代码
我有一个类设置了dict(常量),如下所示:Python 如何将dict打印到CLI应用程序并获得干净的代码,python,dictionary,recursion,command-line-interface,Python,Dictionary,Recursion,Command Line Interface,我有一个类设置了dict(常量),如下所示: EDIT_OPTION_CHOICES = { 'A': 'Add cards', 'D': 'Delete cards', 'O': 'Reorder cards', 'C': 'Change card content', 'R': 'Rename stack', 'Q': 'Quit' } 它用于为用户打印选项。每个字母基本上都是一个
EDIT_OPTION_CHOICES = {
'A': 'Add cards',
'D': 'Delete cards',
'O': 'Reorder cards',
'C': 'Change card content',
'R': 'Rename stack',
'Q': 'Quit'
}
它用于为用户打印选项。每个字母基本上都是一个按键。现在我正在使用这段代码:
keys = [key for key, val in self.EDIT_OPTION_CHOICES.items()]
vals = [val for key, val in self.EDIT_OPTION_CHOICES.items()]
print "Select: (%s) %s (%s) %s (%s) %s (%s) %s (%s) %s (%s) %s" % (
keys[0], vals[0], keys[3], vals[3], keys[1], vals[1], keys[4], vals[4],
keys[2], vals[2], keys[5], vals[5])
我有另一个函数用于评估用户的输入,我希望避免这种情况:
if subprompt == self.EDIT_OPTION_CHOICES.items()[0]:
因为很难从代码中看出我实际上在评估哪个选项。(我的意思是,我可以使用上一个函数中相同的keys
列表来执行if submpt in keys
我不知道,对于这么小的任务,似乎有太多的代码。有更好的方法吗
另外,打印输出没有我想要使用的顺序(因此是无序索引),因为我使用字典。我想我可以使用
EDIT\u OPTION\u CHOICES.items()
并以某种方式对其进行排序,但我不确定这是否会使事情变得更简单。是的,当然。你可以使用列表理解。这里有一行代码:
" ".join("(%s) %s" % i for i in EDIT_OPTION_CHOICES.items())
这样做的目的是,它通过空格连接,空格是一个字符串,按每个项目所需的方式格式化
关于排序,只需使用带有关键字的sort,使用python的默认元组排序,就可以得到:
" ".join("(%s) %s" % i for i in sorted(EDIT_OPTION_CHOICES.items())
这是按字母分类的
我不知道你说的submpt是什么意思。你从
编辑选项选项开始,然后从编辑堆栈选项中生成键和值。这有点分散注意力。对不起,粘贴错误。修复了它。因为python已经按索引顺序排序,所以键
参数是多余的,不是吗?@user3267581很好重点是,忘了python可怕的排序。