以两种颜色打印for循环中的键值对

时间:2017-03-10 15:36:05

标签: python python-3.x

我想在两个颜色的for循环中打印键值对,我不想将它分成几行。

我写的函数看起来像这样:

def TABLES_ONLY_FOUR():
    TABLES_TYPES_FOUR = {
                         "TABLE 2": "4 Seats",
                         "Table 4": "4 Seats",
                         "Table 5": "4 Seats",
                         "Table 8": "4 Seats",
                         "Table 9": "4 Seats"
                     }
    for k, v in TABLES_TYPES_FOUR.items():
        print(k, v, sep=" :   ")

我需要在列中打印它。我也在这里找到了一些颜色:

from colorama import Fore, Back, Style

然而,出于某种原因,当我尝试使用一行代码时,输​​出保持所选颜色以用于所有其他打印,这无论如何都无法解决我的问题。

小编辑

我正在使用Linux Minut,colorama的代码如下所示:

print(Fore.RED + "xxx"

问题:

1)如何更改我的for循环,即打印“表4”和“表8”,其值为红色,其余“表格x”为绿色?

2)稍后我会指这些“表格”,如果它们标记为绿色或红色。如何顺利完成?

2 个答案:

答案 0 :(得分:2)

只需在值中添加颜色,然后使用Fore.RESET重置原始墨水颜色:

from colorama import Fore, Back, Style, init
init()   # probably required only on Windows < Windows 10


def TABLES_ONLY_FOUR():
    TABLES_TYPES_FOUR = {
                         "TABLE 2": ("4 Seats",Fore.GREEN),
                         "Table 4": ("4 Seats",Fore.RED),
                         "Table 5": ("4 Seats",Fore.GREEN),
                         "Table 8": ("4 Seats",Fore.RED),
                         "Table 9": ("4 Seats",Fore.GREEN),
                     }
    for k, (v,col) in TABLES_TYPES_FOUR.items():
        print("{}{}: {}{}".format(col,k,v,Fore.RESET))

TABLES_ONLY_FOUR()

替代方案,不像Steven建议的那样改变您的数据模型:

    for k, v in TABLES_TYPES_FOUR.items():
        print("{}{}: {}{}".format(Fore.RED if k in {'Table 4', 'Table 8'} else Fore.GREEN,k,v,Fore.RESET))

答案 1 :(得分:0)

好了这里的一些事情......似乎你想要对这些表进行分组,你没有提供一个很好的逻辑来解释为什么表4和8是红色的,但那些应该是单独的字典。

然后我们只定义一个红色和绿色的打印功能:

def rprint(msg): print (Fore.RED + msg + Fore.RESET)

def gprint(msg): print (Fore.GREEN + msg + Fore.RESET)