Python:将字符串列表转换为布尔值,其中布尔值以字符串形式存在

3

如何将"True"替换为布尔类型的True或者数字1

mylist = ["Saturday", "True"]

我试过使用replace方法,但是出现了错误:
TypeError: replace() argument 2 must be str, not bool

提前感谢!

1个回答

6
使用列表推导式:
result = [ True if x == "True" else x for x in mylist  ]

根据楼下评论进行编辑

您可以使用字典来转换一些值:

>>> changes = { "True": True,
...             "False": False,
...             "Lemon": "Gin Lemon"
...           }
>>> 
>>> mylist = ["Saturday", "True", "False", "Lemon", "Others" ]
>>> 
>>> [ changes.get( x, x ) for x in mylist ]

['Saturday', True, False, 'Gin Lemon', 'Others']

提示是使用带有默认值的Python字典get方法

如果键在字典中,则返回键的值,否则返回默认值。如果未提供默认值,则默认为None,因此此方法永远不会引发KeyError。


或者使用 x == 'True' or x。我倾向于在条件表达式中看到布尔字面值时感到犹豫不决。 - Martijn Pieters
@MartijnPieters,干得好!你的方法最短且易读。 - dani herrera
如果我有"True"、"Saturday"和"False",并希望将它们转换为True、"Saturday"和False,那么我该如何扩展这个列表推导式呢? - fashioncoder
感谢@MartijnPieters或:result = [ True if x == "True" else False if x == 'False' else x for x in mylist ] - fashioncoder
非常好的解决方案 @daniherrera - fashioncoder
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接