拥有以下代码:
queue_name, tasks_to_lease = self.configuration_service.get_value('tags')[self.task_tag].split('=')
tasks_to_lease = int(tasks_to_lease)
任何方法都可以在一行中完成吗?
答案 0 :(得分:1)
这会将split()
中的每个元素转换为奇数索引为int()
,并将其他元素保留为原样:
>>> queue_name, tasks_to_lease = (int(v) if n else v for n,v in enumerate('a=3'.split('=')))
>>> queue_name
'a'
>>> tasks_to_lease
3
这会将split()
中的每个元素转换为int()
,其中每个字符都是一个数字(即,不会做负数)到>>> queue_name, tasks_to_lease = (int(v) if v.isdigit() else v for v in 'a=3'.split('='))
>>> queue_name
'a'
>>> tasks_to_lease
3
,并将其他字符保留为原样:
{{1}}
答案 1 :(得分:-1)
不推荐但可能:
s = "foo 10"
a, b = map(lambda x: [lambda _: x, int][x.isdigit()](x) , s.split())
print(type(a), type(b))
print(a, b)
<class 'str'> <class 'int'>
foo 10