2012-01-14 5 views
2

私が取り組んでいる質問が1つあり、非常に近い答えを得ました...基本的に、質問は2つの辞書を取得し、両方の辞書と交差する要素を見つけなければならないこれらの要素(両方のdictからの1つの同じキーと両方のdicsからの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'ありたい出力:このような

何かが辞書にあなたがそれをしたいの道を印刷するのでしょうか?あなたはそのような辞書を手に入れることはできないので(しかし、あなたはその表現を変えることができます)。 –

答えて

4

あなたが書いたコードは何も出力しません。ただし、カッコを削除する場合は、これを使用できます。もう少し簡潔で

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

あなたが見ている出力が効率的である

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

または同等これは、あなたの辞書のPythonの表現です。あなたが構築したもの(そして、私が知る限り、正しく構築しました - それはあなたが望むものです)は、キーをアイテムのペアにマッピングする辞書です。ペアはタプルであり、それらの周りにかっこで印刷されます。

あなたが望むように聞こえるのは、辞書を取り出して特定の方法で書式を設定する方法です。

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