将具有混合固有类型的字符串列表转换为固有类型

Dan*_*iel 3 python types list

所以我有一个字符串列表,每个字符串都有固有的类型.

mixedbag = ['True', '2.7', '3', 'Ninety']
Run Code Online (Sandbox Code Playgroud)

我想将其转换为如下所示:

[True, 2.7, 3, 'Ninety']
Run Code Online (Sandbox Code Playgroud)

我想到的是创建一个大的try/except链来评估列表中的每个项目,但这并不像处理这个问题的pythonic方式.

mir*_*ulo 5

您可以ast.literal_eval在try-except块中使用.

from ast import literal_eval
def unmix(ele):
    try:
        ele = literal_eval(ele)
    except ValueError:
        pass
    return ele
Run Code Online (Sandbox Code Playgroud)

演示

>>> list(map(unmix, mixedbag))
[True, 2.7, 3, 'Ninety']
Run Code Online (Sandbox Code Playgroud)