2012-02-07 165 views
1
'state_license': {u'License ': u'29393, 25633', 
        u'Expiration': u'08-01-2012, 04-02-2012', 
        u'Trade': u'Registered Contractor, Plumber'} 

如何将'29393, 25633'转换为列表?将字典值转换为列表?

回答

4
>>> state_license = {u'License ': u'29393, 25633', 
...     u'Expiration': u'08-01-2012, 04-02-2012', 
...     u'Trade': u'Registered Contractor, Plumber'} 
>>> {key: value.split(", ") for key, value in state_license.items()} 
{u'License ': [u'29393', u'25633'], 
u'Expiration': [u'08-01-2012', u'04-02-2012'], 
u'Trade': [u'Registered Contractor', u'Plumber']} 
+0

@RikPoggi:谢谢你修复错字! – 2012-02-07 10:36:16

0

您可以使用此split method

>>> u'29393, 25633'.split() 
[u'29393,', u'25633'] 

如果你有你的大的字典在info,你想就地值转换,然后做

info['state_license']['License'] = info['state_license']['License'].split() 
3

随着split()

>>> '29393, 25633'.split(', ') 
['29393', '25633'] 

现在还不清楚,但你似乎有双重嵌套的字典,是这样的:

d = {'state_license': {'License ': '29393, 25633', 
         'Expiration': '08-01-2012, 04-02-2012', 
         'Trade': 'Registered Contractor, Plumber'}} 

要转换:

nested = d['state_license'] 
for k,v in nested.iteritems(): 
    nested[k] = v.split(', ') 

""" 
{'state_license': {'License ': ['29393', '25633'], 
        'Expiration': ['08-01-2012', '04-02-2012'], 
        'Trade': ['Registered Contractor', 'Plumber']}} 
""" 
+0

咦?为什么downvote?这是OP实际问题的确切答案。 – 2012-02-07 10:35:21

+0

@Tim:是的,这很奇怪......我试图改进它:) – 2012-02-07 10:45:25

-2

现在。 (!不要)如果你想成为一个敢魔鬼,你可以这样做:

>>> eval('[' + u'29393, 25633' + ']') 
[29393, 25633] 

不过...。那取决于你知道什么是在该列表中。这也将打破其他元素:

>>> eval('[' + u'08-01-2012, 04-02-2012' + ']') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<string>", line 1 
    [08-01-2012, 04-02-2012] 
    ^
SyntaxError: invalid token 

所以,坚持str.split()方法)

0

如果有钥匙'state_license'字典中被称为d

[d.__setitem__(k,v.split(", ")) for k,v in d['state_license'].items()] 
0

如果我没有弄错,eval()翻译代码来生成Python字节码,然后在Python虚拟机中执行它,它是w AY比普通str.split功能较慢:

help(str.split) 

在事实上,我与分裂“”而不是“”,然后剥离的每个项目,例如(Python3.x字典理解):

{k: [x.strip() for x in v.split(',')] for k, v in dictionary['state_license'].items()}