Python 就地更新列表,转换为';正确'/';假';元素到1/0

Python 就地更新列表,转换为';正确'/';假';元素到1/0,python,list,dictionary,Python,List,Dictionary,在python中,假设我有一个列表: l = [ 'True', 'False', 'myname', 1, 0, 'foo' ] 我想将字符串'True'或'False'转换为1或0,这样做的最佳方法是什么,并且仍然保留值原来的索引?i、 e.输出如下所示: l = [ 1, 0, 'myname', 1, 0, 'foo' ] 我是你的朋友: >>> l = [ 'True', 'False', 'myname', 1, 0, 'foo'] >>>

在python中,假设我有一个列表:

l = [ 'True', 'False', 'myname', 1, 0, 'foo' ] 
我想将字符串
'True'
'False'
转换为
1
0
,这样做的最佳方法是什么,并且仍然保留值原来的索引?i、 e.输出如下所示:

l = [  1, 0, 'myname', 1, 0, 'foo' ]

我是你的朋友:

>>> l = [ 'True', 'False', 'myname', 1, 0, 'foo'] 
>>> mapping = {"True": 1, "False": 0}
>>> [mapping.get(x, x) for x in l]

如果您的列表中的项目是
打开
关闭
等,我会提供一个更强大的解决方案(请参阅)

样本输出:

>>> l = [ 'True', 'False', 'myname', 1, 0, 'foo' ] 
>>> print convert_str_to_bool(l)
[1, 0, 'myname', 1, 0, 'foo']
可以使用for循环

for i in l:

    if i == 'True':

        a = l.index(i)

        b = l.remove(i)

        l.insert(a, 1)

    elif i == 'False':

        a = l.index(i)

        b = l.remove(i)

        l.insert(a, 0)

print(l)

你的意思是字符串'True','False'而不是布尔值True,False吗?可以进一步使用
映射={“True”:1,“False”:0}。获取
>>> l = [ 'True', 'False', 'myname', 1, 0, 'foo' ] 
>>> print convert_str_to_bool(l)
[1, 0, 'myname', 1, 0, 'foo']
for i in l:

    if i == 'True':

        a = l.index(i)

        b = l.remove(i)

        l.insert(a, 1)

    elif i == 'False':

        a = l.index(i)

        b = l.remove(i)

        l.insert(a, 0)

print(l)