gpt4 book ai didi

python - 将参数作为字符串传递给 zip(),避免使用 exec()

转载 作者:行者123 更新时间:2023-12-01 05:46:45 24 4
gpt4 key购买 nike

我有几个列表,例如 A、B、C、D、E,我想根据用户输入以各种方式使用 zip() 组合这些列表。

output_list = zip(A,C,D)
output_list = zip(A,D,E,B)
output_list = zip(C,D)

我需要将参数作为字符串传递,我相信这可以使用 getattr() 来完成,例如:

my_arguments = 'A,C,D' #string
output_list = getattr(zip, my_arguments)

我收到错误

'builtin_function_or_method' object has no attribute 'raw,dd,utm'

我对树吠叫了吗? (我不想使用 exec())

最佳答案

类似 zip(*[locals()[x] for x in my_arguments.split(',')]) 可能会起作用。

如果变量是在全局命名空间中定义的,则可能用 globals 替换 locals

如果你知道你只需要处理ABC ...,你可以打包它们提前放入字典中:

namespace = {'A':A,
'B':B,
'C':C,
}
zip_args = [namespace[x.strip()] for x in my_arguments.split(',')]
output = zip(*zip_args)

这实际上只是我上面所说的更明确的版本(使用 locals() 字典作为命名空间映射)。由于这是最明确的版本,因此我将使用它......然后您不必担心用户以某种方式在 output 中包含他们不应该包含的内容。

关于python - 将参数作为字符串传递给 zip(),避免使用 exec(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15837044/

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