Избавление от скобок после пересечения словаря - PullRequest
2 голосов
/ 14 января 2012

Есть один вопрос, над которым я работаю и получил очень близкий ответ ... в основном, вопрос в том, что вы получаете два словаря, и вам нужно найти элементы, которые пересекаются с обоими словарями, а затем создать эти элементы (один и тот же ключ из обоих слов и двух значений из обоих слов) в новом словаре.

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}

Как мне избавиться от скобок вокруг значений?

Ответы [ 2 ]

4 голосов
/ 14 января 2012

Код, который вы написали, вообще ничего не выведет. Однако, если вы хотите удалить скобки, вы можете использовать это.

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

или, что эквивалентно, более краткий и эффективный

str(intersect(a, b)).translate(None, '()')
0 голосов
/ 14 января 2012

Вывод, который вы видите, является представлением Python вашего словаря.То, что вы построили (и, насколько я могу судить, вы построили его правильно - это то, что вы хотите) - это словарь, отображающий ключи на пары элементов.Пары - это кортежи, которые печатаются с круглыми скобками.

Звучит так, будто вам нужен метод, который берет ваш словарь и печатает его, отформатированный определенным образом.

Что-токак это будет печатать словарь так, как вы хотите:

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