通过命名空间迭代

Fin*_*ist 13 python namespaces

我有一个看起来像这样的命名空间:

命名空间(ATQ =无,BE =无,BEQ =无,B =无,BQ =无,C =无,C =无,CJ =无,d =无,G =无,JR = [ 'XX',' 015'],lC =无,l =无)

如何迭代它以便我可以找到并替换"jR"键的'xx'值?

ask*_*han 15

我不确定你事先知道什么,(名称jR,或只有一个名称有一个not None值),但你可以尝试使用vars(),就像__dict__你的命名空间中的名称作为键的dict一样.所以,如果你在'jR'某处有字符串,

vars()['jR'] = vars()['jR'][0]
Run Code Online (Sandbox Code Playgroud)

同样,你可以使用相同的字典namespace.__dict__,而不是vars()

将为您留下第一个值['xx','015']作为唯一值jR.

编辑:要明确,既然vars()和__dict__都返回dicts,你可以迭代它们:

for k in namespace.__dict__:
    if namespace.__dict__[k] is not None:
        <<do something>>
Run Code Online (Sandbox Code Playgroud)

  • `vars` 是否接受 `args` 例如 `vars(args)`?从这个问题来看,他显然有一个具有某种类型的“命名空间”结构/实例的对象......你能解决这个问题吗? (2认同)