1

有没有一种简单的方法可以将键从字符串更改为 python 中的元组?例如:

dict = {'100,2': 0.3, "2,5" = 0.5}
4

6 回答 6

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}
于 2013-10-31T20:22:17.127 回答
0

如果这是您想要的,我会将其发布为答案。您可以直接使用元组作为键定义字典:

>>> 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值泄漏到用户空间中。

于 2013-10-31T21:02:58.767 回答
0

您可以使用嵌套的 dict 来获得这种效果:

dict = {'100': {'2': 0.3},
        '2': {'5': 0.5}}
dict['100']['2']
=> 0.3
于 2013-10-31T20:21:17.010 回答
0

你当然可以。

>>> key = (100,2)
>>> value = 0.3
>>> d = {}
>>> d [key] = value
>>> d [key]
0.3
于 2013-10-31T20:23:56.343 回答
0

这对我有用

 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'}
于 2013-10-31T20:25:16.943 回答
0

这样做的方法更长,但它向您展示了如何获得您想要的结果。

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}
于 2013-10-31T20:26:05.247 回答