2017-03-10 98 views
0

我想在兩種顏色的for循環中打印鍵值對,我不希望將其分成多行。在兩種顏色的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和彩色光的代碼是這樣的:

print(Fore.RED + "xxx" 

問題:

1)如何改變我的for循環,即打印「表4「和」表8「,它們的值是紅色的,其餘的」表格x「是綠色的?

2)稍後我會參考這些「表格」,如果它們標記爲綠色或紅色。如何順利進行?

+0

爲什麼被打上了Linux呢? –

+1

我沒有看到代碼中的任何地方的colorama代碼,它在哪裏? –

+0

對不起,用Linux標記了這個,因爲我發現Python中的輸出顏色可能以某種方式連接到其他操作系統。 – michael93pl

回答

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() 

替代,而無需改變你的數據模型史蒂芬建議:

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

如果OP不想將顏色硬編碼到數據結構中,他可以在循環外'red_tables = {'Table 4','Table 8'}'和循環內:'col = Fore .RED如果在red_tables中有k個Fore.GREEN'。 –

+0

@StevenRumbalski我會編輯。我們不確切知道OP需要什麼。 –

+0

由於評論是暫時的/可以刪除,所以我最好在我的回答中添加您的建議。避免修改OP數據,這很好。 –

0

確定這樣一個這裏很少有東西......看起來你想把這些表分組,但是你沒有提供一個很好的邏輯,爲什麼表4和表8是紅色的,但是這些可能是單獨的字典。

然後我們就定義了一個紅色和綠色打印FUNC:

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

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