将一个列表转换为设置,但如果为空,则使用默认值

2024-04-24 07:52:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种更好的方法来分配一个集合,如果这个集合不是空的,那么应该使用另一个列表。

如果可能的话,我想要一个更好的方法来写这个(或者一个关于为什么这是最好的方法的争论):

if args.onlyTheseServers:
    only = set(args.onlyTheseServers)
else:
    only = set(availableServers)

Tags: 方法only列表ifargselsesetavailableservers
3条回答

args.onlyTheseServers似乎是来自argparse的变量。

如果是这种情况,您应该检查^{}参数和^{}方法。

下面是一个例子:

>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', nargs='*', default=['1', '2', '3'])
>>> args = parser.parse_args()
>>> args.foo
['1', '2', '3']
>>> args = parser.parse_args(['--foo', 'a', 'b'])
>>> args.foo
['a', 'b']
only = set(args.onlyTheseServers or availableServers)

看一下前面的question,我想说的是,您真正需要的是使用argparse为丢失的参数分配默认值的方法。在这种情况下,您只需按如下方式使用default

parser.add_argument('-o', '--only', default=default_servers, ...)

这样,当未传递-o/--only选项时,命名空间将正确设置默认值。

相关问题 更多 >