【发布时间】:2018-01-08 11:00:07
【问题描述】:
我有一个string 代表tuple,如下所示:
t = "(a,b),(c,d),(e,f)"
我想把它转换成这样的字典:
d = {'a':'b', 'c':'d', 'e':'f'}
我尝试按照以下方式进行操作
>>> l = t.split(',')
>>> l
>>> ['(a', 'b)', '(c', 'd)', '(e', 'f)']
>>> l = [i.replace('(','').replace(')','') for i in l]
>>> l
>>> ['a', 'b', 'c', 'd', 'e', 'f']
>>> dict([(a,b) for a,b in zip(l[::2],l[1::2])])
>>> {'e': 'f', 'c': 'd', 'a': 'b'}
这给了我正确的结果(dict 元素的顺序对我来说并不重要)。然而,这是低效的,因为它需要三个步骤才能获得所需的输出。有没有办法在两个或理想的一个操作/语句中得到这个?
【问题讨论】:
-
您应该在尝试改进之前测量性能。这样您就可以知道是否有必要以及是否实现了速度提升。
-
@GarbageCollector
t是由逗号分隔的许多元组的字符串表示形式。 -
@Chris_Rands 在 Python 中它们不是必需的。
-
关于变量名...是的,它们需要被定义,就像我上面的评论一样。
-
@user202729 需要定义哪些变量名?
标签: python-3.x dictionary tuples