Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将dict打印到CLI应用程序并获得干净的代码_Python_Dictionary_Recursion_Command Line Interface - Fatal编程技术网

Python 如何将dict打印到CLI应用程序并获得干净的代码

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' } 它用于为用户打印选项。每个字母基本上都是一个

我有一个类设置了dict(常量),如下所示:

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可怕的排序。