【问题标题】:Getting rid of parentheses after dictionary intersection字典交集后去掉括号
【发布时间】:2012-01-14 05:43:05
【问题描述】:

我正在研究一个问题并得到了非常接近的答案......基本上,问题是你得到两个字典,你必须找到两个字典相交的元素,然后创建这些元素(一个相同的键来自两个字典和两个字典的两个值)在新字典中。

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}

这样的输出

如何去掉值周围的括号?

【问题讨论】:

  • 您想要的输出是string 还是dict?因为你不能得到这样的字典(但你可以改变它的表示)。

标签: python dictionary intersection


【解决方案1】:

您编写的代码根本不会输出任何内容。但是,如果要删除括号,则可以使用它。

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

或者等价的this,更简洁高效一点

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

【讨论】:

    【解决方案2】:

    您看到的输出是字典的 python 表示形式。你所构建的(据我所知,你已经正确地构建了它——这就是你想要的)是一个字典,将键映射到成对的项目。这些对是元组,并且在它们周围用括号打印。

    听起来您想要的是一种获取字典并以特定方式格式化的方法。

    这样的事情会按照你想要的方式打印字典:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多