2012-01-14 37 views
2

有一個問題,我正在努力,並得到了一個非常接近的答案...基本上,問題是,你得到兩個字典,你必須找到相互的字典,然後相交的元素,然後在新詞典中創建這些元素(兩個詞典中的一個相同鍵和兩個詞典中的兩個值)。字典交叉後襬脫括號

a = {'A':17,'B':31,'C':42,'D':7,'E':46,'F':39,'G':9} 
b = {'D':8,'E':3,'F':2,'g':5} 

def intersect(a,b): 
    c = set(a).intersection(set(b)) 
    d = {} 
    for i in c: 
     if i in a: 
      d[i] = int(a[i]),int(b[i]) 
    return d 

OUTPUT: {'E': (46, 3), 'D': (7, 8), 'F': (39, 2)} 

我想得到這樣的輸出{ 'E':46,3, 'd':7,8, 'F':39,2}

如何擺脫值的括號?

+0

,你要的是一個'string'或'dict'輸出?因爲你不能得到這樣的字典(但你可以改變它的表示)。 – 2012-01-14 09:18:11

回答

4

您寫的代碼根本不會輸出任何內容。但是,如果你想刪除括號,那麼你可以使用它。

str(intersect(a, b)).replace('(', '').replace(')', '') 

或等價這一點,這是一個比較簡潔高效

str(intersect(a, b)).translate(None, '()') 
0

您所看到的輸出是你的詞典的蟒表示。你已經建立了什麼(並且,據我所知,你已經正確地建立了它 - 這就是你想要的)是一個字典將鍵映射到項目對。這些對是元組,並且在它們周圍用圓括號打印。

這聽起來像你想要的是一種方法,它需要你的字典和打印它,以特定的方式格式化。

像這樣的打印字典你想要的方式:

def dictionary_printer(d): 
    print "{%s}" % ', '.join(
     [("'%s': %s" % (key, ', '.join(map(str,value)))) 
     for key, value in d.items()] 
    )