我想在两个颜色的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)稍后我会指这些“表格”,如果它们标记为绿色或红色。如何顺利完成?
答案 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)