将字典值转换为列表?

时间:2012-02-07 10:20:36

标签: python list dictionary

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

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

6 个答案:

答案 0 :(得分: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']}

答案 1 :(得分: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']}}
"""

答案 2 :(得分:0)

您可以使用split method

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

如果您在info中有更大的字典,并且想要就地转换该值,请执行

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

答案 3 :(得分:0)

如果具有密钥'state_license'的字典被称为d

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

答案 4 :(得分:0)

如果我没弄错的话,eval()会转换代码来生成Python字节码,然后在Python虚拟机中执行它,这比普通的str.split函数要慢:

help(str.split)

事实上,我用','而不是','分开,然后剥去每个项目,例如(Python3.x字典理解):

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

答案 5 :(得分:-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()方法;)