打印

2017-07-25 45 views
1

當從本字典的值的括號我有以下功能,其中我想生成基於引入的參數的數目的字典:打印

def find_posit(*param): 
    query = {'colors':param} 
    return query 

print(find_posit('red','blue','green')) 

當打印功能,返回的輸出是這樣的:

{'colors':('red','blue','green')} 

我怎樣才能獲得以下輸出?

{'colors': 'red','blue','green'} 
+0

'打印(STR(find_posit(紅,藍,綠))。REPLACE( '(', '').replace( ')', ''))' –

+2

的簡單的答案是,你不能。這就是Python爲元組對象定義'__repr __()'的方式。 –

+0

想象一下,如果字典中有多個鍵值對。逗號雖然在技術上仍然毫不含糊,但對於讀者來說卻是一團糟。 '{'colors':red,blue,green,'data':7,8,9,'foo':bar}' –

回答

1

簡短的回答是,你不能。這就是Python爲元組對象定義__repr__()表示的方式。

但是,您可以創建一個自定義函數來「字符串」要在代表字典:

>>> def print_custom_dict(d): 
    pairs = [] 
    for k, v in d.items(): 
      pair = '{}: {}'.format(repr(k), ','.join(repr(val) for val in v)) 
      pairs.append(pair) 
    return '{%s}' % ', '.join(pairs) 

>>> print_custom_dict({'colors':('red', 'blue', 'green')}) 
"{'colors': 'red','blue','green'}" 

當然,還有其他的,你可以採取的選項,如定義自定義tuple -ish對象,並修改它的__repr__()以打印所需的輸出,但在您的情況下使用簡單的輔助函數IMO是最簡單和最乾淨的方法。

+1

+1爲自定義元組對象。這絕對是解決方案,可以更好地適用於非平凡的用例。 –

+0

@SilvioMayolo是的,你的權利。雖然我認爲函數是這樣一個簡單的例子的更清晰的解決方案,但是對於不平凡的用例,自定義對象會更好,更乾淨,更健壯。 –

0

我不確定,但根據python文檔沒有使用任何數據類型,你不能添加多個值到字典,所以你不能刪除tuples.may我錯了。這裏是你的代碼。

def find_posit(*param): 
 
    query = {'colors':param} 
 
    return query 
 

 
print(find_posit('red','blue','green'))