基于用户对函数的输入访问文件名的一部分

2024-06-16 14:45:10 发布

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

我是一个新手,正在尝试如何完成以下任务:

我有以下格式的以用户命名的dict:

<user>_hx

我想用如下函数访问它们:

def foo(user, other_stuff):
  user_hx[key]

……等等

我试图用%访问,如下所示:

def foo(user, other_stuff):
  %r_hx %user[key]

但很明显我知道这是行不通的

再见


Tags: key函数用户foodef格式命名dict
3条回答

我认为您要问的是如何基于表示变量名称的字符串访问变量。Python让这变得非常简单:

globals()['%s_hx' % user]

会给你变量<user>_hx,所以你只需要

globals()['%s_hx' % user][key]

(我不确定您是应该使用globals()还是locals();这将取决于变量的定义方式以及您试图从何处访问它们)

也就是说,可能有一个更简单/更干净的方法来做你正在做的事情。例如,你有没有考虑过把所有这些字典放在一个“主”字典里,这样你就可以把它们传给别人,也可以直接访问它们

def foo(user,other_stuff):
     fname = "%s_hx"%user[key] #not sure where key is comming from... but would result in something like "bob_hx"
     with open(fname) as f:
          print f.read()

也许吧?/

不要将名称用作变量。您可以将您的词典集合放入另一个顶级词典中,并将这些名称作为键

users = {
    "user1_hx": {"name": "User 1"},
    "user2_hx": {"name": "User 2"),
    }

等等

然后访问:

realname = users["%s_hx" % name]["name"]

等等

相关问题 更多 >