Python:将字符串列表转换为布尔值,其中布尔值以字符串形式存在[重复]
Posted
技术标签:
【中文标题】Python:将字符串列表转换为布尔值,其中布尔值以字符串形式存在[重复]【英文标题】:Python: convert list of strings to booleans where boolean is present in string form [duplicate] 【发布时间】:2018-11-05 15:38:00 【问题描述】:如何将"True"
替换为布尔值True
或1
?
mylist = ["Saturday", "True"]
我试过替换,但得到错误:
TypeError: replace() argument 2 must be str, not bool
提前致谢!
【问题讨论】:
【参考方案1】:使用列表推导:
result = [ True if x == "True" else x for x in mylist ]
已编辑应有的 OP 评论
您可以使用字典来转换一些值:
>>> 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 dictionary get
method:
如果键在字典中,则返回键的值,否则返回默认值。如果未给出默认值,则默认为 None,因此此方法永远不会引发 KeyError。
【讨论】:
或使用x == 'True' or x
。我倾向于在条件表达式中看到布尔文字..
@MartijnPieters,好镜头!您的方法最短且易读。
如果我同时拥有“True”、“Saturday”和“False”并希望转换为 True、“Saturday”和 False,我该如何扩展此列表理解
@fashioncoder:那就是x == 'True' if x in 'True', 'False' else x
。
感谢@MartijnPieters 或:result = [ True if x == "True" else False if x == 'False' else x for x in mylist ]以上是关于Python:将字符串列表转换为布尔值,其中布尔值以字符串形式存在[重复]的主要内容,如果未能解决你的问题,请参考以下文章