【问题标题】:Converting a dictionary value in to a list?将字典值转换为列表?
【发布时间】:2012-02-07 10:20:35
【问题描述】:
'state_license': {u'License ': u'29393, 25633', 
                  u'Expiration': u'08-01-2012, 04-02-2012', 
                  u'Trade': u'Registered Contractor, Plumber'}

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

【问题讨论】:

    标签: python list dictionary


    【解决方案1】:
    >>> 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']}
    

    【讨论】:

    • @RikPoggi:感谢您纠正错字!
    【解决方案2】:

    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']}}
    """
    

    【讨论】:

    • 嗯?为什么投反对票?这是对 OP 实际问题的确切答案。
    • @Tim:是的,这很奇怪......我还是试着改进它:)
    【解决方案3】:

    您可以为此使用split method

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

    如果您在info 中有更大的字典并且您想就地转换值,那么就这样做

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

    【讨论】:

      【解决方案4】:

      如果有'state_license'键的字典被称为d

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

      【讨论】:

        【解决方案5】:

        如果我没记错的话,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()}
        

        【讨论】:

          【解决方案6】:

          现在。如果你想成为一个敢于冒险的人(不要!),你可以这样做:

          >>> 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() 方法;)

          【讨论】:

            猜你喜欢
            • 2016-02-04
            • 1970-01-01
            • 2022-11-14
            • 2017-04-23
            • 2021-10-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多