gpt4 book ai didi

python - 参数。 nargs + 自定义类型时不起作用

转载 作者:行者123 更新时间:2023-12-04 09:18:54 26 4
gpt4 key购买 nike

通常我有这样的争论:

parser.add_argument(
"--distances",
nargs="+",
type=int,
default=[1, 2, 3],
)
现在我需要包含 +- np.inf,我的想法是将列表作为字符串获取,并将“inf”映射到 np.inf,例如,如下所示:
mapper = {'inf': np.inf, '-inf': -np.inf}

def process_bins(distances: List[str]) -> List[float]:
return [mapper[distance] if mapper.get(distance) else float(distance)
for distance in distances
]
parser.add_argument(
"--distances",
nargs="+",
type=process_bins,
default=[-np.inf, 2, np.inf],
)
但是当我这样做时,列表距离成为第一个元素,它失败了。
例如,如果我用 --distances 1 2 3 调用脚本, args.distances = '1'怎么了?

最佳答案

type是每个元素的转换器,而不是所有元素的转换器。它接收并且应该只返回一个元素:

mapper = {'inf': np.inf, '-inf': -np.inf}

def process_bin(distances: str) -> float:
return mapper.get(distance, float(str))

parser.add_argument(
"--distances",
nargs="+",
type=process_bins,
default=[-np.inf, 2, np.inf],
)
请注意 np.inf等于 float('inf') – 使用 type=float在这里也能正常工作。

关于python - 参数。 nargs + 自定义类型时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63131512/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com