我正在使用Python 2.5和Win XP。我有一个元组如下:
>>> a
(None, '{1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12}')
>>> a[1]
'{1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12}'
>>>
我想将元组[1]转换为字典,因为我想使用键和值。请帮忙提出建议。 TQ
答案 0 :(得分:5)
>>> import ast
>>> ast.literal_eval(a[1])
{1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12}
答案 1 :(得分:3)
首先在逗号上拆分字符串。 迭代所有部分。 将每个部分拆分为冒号。 将字符串转换为整数。 将第二个整数作为第一个整数的值添加为键。
答案 2 :(得分:1)
如果您信任a[1]
的来源,则可以使用eval
:
dictionary = eval(a[1])
否则,您可以使用json
(或Python 2.5中的simplejson
:see here):
import json
dictionay = json.loads(a[1])
注意:这主要取决于你如何获得字符串:如果它来自repr
并且无法被黑客攻击,eval
可能会很好。
如果它来自json.dumps
(会产生不同的字符串),则应使用json.loads
。
答案 3 :(得分:1)
还有另一种方法,不使用任何导入。
一个简单的列表理解(temp):
>>> a
(None, '{1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12}')
>>> a[1]
'{1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12}'
>>> temp = [[int(c) for c in b.split(":")] for b in a[1].strip('{}').split(",")]
>>> a_dict = dict(temp)
>>> a_dict[1]
2
>>> a_dict[2]
4
答案 4 :(得分:0)
dict()构造函数构建 字典直接来自列表 存储为元组的键值对。什么时候 这些对形成一个模式,列表 理解可以紧凑地指定 键值列表。
dict([('sape',4139),('guido',4127),('jack',4098)]) {'sape':4139,'jack':4098,'guido':4127} dict([(x,x ** 2)for x in(2,4,6)])#使用列表理解 {2:4,4:16,6:36}
复制&粘贴自:http://docs.python.org/tutorial/datastructures.html