0

私は、次のことを達成する方法を理解しようとしている初心者です。

次の形式で、ユーザーにちなんで名付けられた辞書があります。

<user>_hx

私は次のような関数でそれらにアクセスしたい:

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

......等。

次のように % でアクセスしようとしました:

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

しかし、明らかな理由から、それが機能しないことはわかっています。

アドバイス?

4

3 に答える 3

1

あなたが求めていると思うのは、名前を表す文字列に基づいて変数にアクセスする方法です。Python はこれをとても簡単にします:

globals()['%s_hx' % user]

あなたに変数を与える<user>_hxので、あなたはただ欲しい

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

globals()またはを使用する必要があるかどうかはわかりませんlocals()。変数の定義方法と、変数にアクセスしようとしている場所によって異なります)

そうは言っても、あなたがしていることは何でもするためのより簡単でクリーンな方法がおそらくあるでしょう。たとえば、これらすべての辞書を「マスター」辞書に入れて、それらを渡したり、アクセスしたりできるようにすることを検討しましたか?

于 2012-07-26T22:31:48.817 に答える
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()

多分?/

于 2012-07-26T22:32:36.283 に答える
0

名前を変数として使用しないでください。これらの名前をキーとして、辞書のコレクションを別のトップレベルの辞書内に配置できます。

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

次に、次のようにアクセスします。

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

于 2012-07-27T00:31:48.973 に答える