Python 就地更新列表,转换为';正确'/';假';元素到1/0
在python中,假设我有一个列表: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'] >>>
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)