有没有一种简单的方法可以将键从字符串更改为 python 中的元组?例如:
dict = {'100,2': 0.3, "2,5" = 0.5}
像这样的东西?
>>> d = {'100,2': 0.3, "2,5": 0.5}
>>> d = {tuple(k.split(',')): v for k, v in d.items()}
>>> d
{('100', '2'): 0.3, ('2', '5'): 0.5}
如果这是您想要的,我会将其发布为答案。您可以直接使用元组作为键定义字典:
>>> tuple_dict = {(100, 2): 0.3, (2, 5): 0.5}
>>> tuple_dict[(100,2)]
0.3
如果它将 '(100,2)' 转换为有问题的元组,并且只涉及显式常量,那么您可以尝试:
>>> eval('(100,2)', None, None)
(100, 2)
参数防止程序变量的None
值泄漏到用户空间中。
您可以使用嵌套的 dict 来获得这种效果:
dict = {'100': {'2': 0.3},
'2': {'5': 0.5}}
dict['100']['2']
=> 0.3
你当然可以。
>>> key = (100,2)
>>> value = 0.3
>>> d = {}
>>> d [key] = value
>>> d [key]
0.3
这对我有用
d = {'2,5': 'a', '2,6': 'b'}
e= {}
for x in d.keys(): e[tuple(x.split(','))]=d[x]
print e
{('2', '6'): 'b', ('2', '5'): 'a'}
这样做的方法更长,但它向您展示了如何获得您想要的结果。
dict = {'100,2': 0.3, "2,5" : 0.5}
k = dict.keys()
for i in range(len(k)):
k[i] = tuple(k[i].split(','))
newDict = {}
for i, key in enumerate(dict.keys(), 0):
newDict[k[i]] = dict[key]
dict = newDict
print dict
输出:
{('100', '2'): 0.3, ('2', '5'): 0.5}