我正在尝试弄清楚如何完成以下操作:
我有以下列格式命名的用户命名:
<user>_hx
我想用这样的函数访问它们:
def foo(user, other_stuff):
user_hx[key]
......等等。
我尝试使用%访问如下:
def foo(user, other_stuff):
%r_hx %user[key]
但由于显而易见的原因,我知道这无法奏效。
书于?
答案 0 :(得分:1)
我认为您要问的是如何根据表示其名称的字符串访问变量。 Python使这很容易:
globals()['%s_hx' % user]
会为您提供变量<user>_hx
,因此您只需要
globals()['%s_hx' % user][key]
(我不确定您是否应该使用globals()
或locals()
;这取决于您的变量的定义方式以及您尝试从中获取变量的位置。
也就是说,可能有一种更简单/更清洁的方式来做你正在做的事情。例如,您是否考虑将所有这些词典放在“主词典”中,以便您可以传递它们,以及只访问它们
答案 1 :(得分:0)
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()
可能?/
答案 2 :(得分:0)
不要将名称用作变量。您可以将您的词典集合放在另一个顶级字典中,并将这些名称作为键。
users = {
"user1_hx": {"name": "User 1"},
"user2_hx": {"name": "User 2"),
}
等
然后访问:
realname = users["%s_hx" % name]["name"]
等