解析字符串并分配给相同的变量? - python

用不同类型的值重新分配变量是否有效?

我有一个格式为k1:v1,k2:v2,k3:v3的字符串,该字符串来自命令行。解析它很简单:

kvs=args.kvs
if kvs is not None:
    kvs = [(kv[0], kv[1]) for kv in [kv_str.split(':') for kv_str in kvs.split(',')]]   

由于我是从严格类型的语言中学习python的,因此对我来说,这种方法看起来并不干净,因为它是使用其他类型重新分配的。

是否将其视为解析字符串的pythonic解决方案?

参考方案

简短答案:

这样做是一种很好的方法。尽管您可以执行if kvs:,因为在Python中空集合类型被认为是错误的(当然,如果这适合您的情况)。

长答案:

不幸的是,这实际上只是Python界的意见。当从严格类型的语言转向Python时,您会看到人们不鼓励或禁止使用更严格的语言做的事情。

话虽这么说,我认为始终避免突变并在类型更改时创建新变量总是比较安全。在不带类型检查的情况下传递args的大型代码库中,这种方法可以为您节省很多将来的调试时间。

您可能会看到这种写法的另一种方式是将列表对象分配给新变量的类似内容。

kvs = "k1:v1,k2:v2,k3:v3"

kv_pairs = [
    tuple(kv_str.split(':'))
    for kv_str in kvs.split(',')
] if kvs else []

编辑:修复了我发布的代码示例

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python uuid4,如何限制唯一字符的长度 - python

在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。