2016-03-11 26 views
-1

因此,這是我的程序將代碼添加到一起的代碼。刪除詞典鍵值對中的空格

from collections import Counter 
from itertools import chain 

def add_sparse_vectors(lst1,lst2): 
    dest = dict(Counter(lst1)+Counter(lst2)) 
    return dest 

這是我的電流輸出:

>>> v1 = {0:1, 1:3, 2:1} 
>>> v2 = {0:1} 
>>> add_sparse_vectors(v1, v2) 
{0: 2, 1: 3, 2: 1} 

問題是,我的作業要求該輸出專門:

>>> v1 = {0:1, 1:3, 2:1} 
>>> v2 = {0:1} 
>>> add_sparse_vectors(v1, v2) 
{0:2, 1:3, 2:1} 
#Note the lack of spaces between the colon and the value in each pair. 

有沒有人有一個解決方案,從消除這種特定的空間輸出中的鍵值對?任何幫助表示讚賞。

+1

我認爲這項任務已經完成。您需要創建自己的'dict'類,以獲得確切的輸出。 (除非你真的想要返回一個字符串。)誰給了這個任務可能會留下空間,使它更清楚哪些是關鍵,哪些是值。 – zondo

+0

好的,謝謝。我只是擔心,因爲我的技術援助提到我需要在作業單上給出的確切結果才能獲得信貸。這似乎相當微不足道,希望我會好起來的。 –

+0

是''注意缺少空格......'作業的一部分,還是你的筆記? – Junuxx

回答

1

如果你真的想擺脫空間,你不需要實現一個自定義dict類,就像建議的@zondo一樣。該作業只需要表示沒有空格。如果add_sparse_vectors返回字符串而不是字典,則不需要更改dict的行爲。

雖然我不認爲這是特別優雅,但它確實擺脫了空間。

def add_sparse_vectors(v1, v2): 
    combined_dict = dict(Counter(lst1)+Counter(lst2)) 
    key_val_pairs = [str(k)+":"+str(v) for k,v in combined_dict.items()] 
    output = "{" + ", ".join(key_val_pairs) + "}" 
    return output 
0

你可以寫你自己的打印功能的詞典:

def print_dict(d): 
    print('{'+', '.join('{}:{}'.format(k, v) for k, v in d.items())+'}') 

這做什麼你的鍛鍊請求,但實際上我認爲他們不應該在乎有一些空格或多或少只要任務正確解決...