-1

簡単だと思いますが、1時間グーグルした後(Pythonは初めて)、問題を解決するために何をグーグルで検索すればよいかわかりません:(現在のコードと望ましい結果から、私が何をしているのかがわかります。達成しようとしています!

Thxマット。

コード:

usernames = ['joe', 'john', 'fred']

joe_image = 'c:\aaa\blahblah.jpg'
john_image = 'c:\aaa\foobar.jpg'
fred_image = 'd:\aaa\1234.jpg'


for z in usernames:
    print z
    y = z + '_image'
    print y

結果 :

joe
joe_image
john
john_image
fred
fred_image

望ましい結果

joe
c:\aaa\blahblah.jpg
john
c:\aaa\foobar.jpg
fred
d:\aaa\1234.jpg
4

4 に答える 4

2

辞書と呼ばれるものが必要です

lookup_path = {'joe': 'C:\whatev', 'john':'C:\else'}
for z in usernames
    print lookup_path[z]
于 2013-01-31T00:33:50.200 に答える
0

別のアプローチは、明確にするために簡潔さを失う代償を払うnamedtupleを使用することです。

from collections import namedtuple

Pair = namedtuple('Pair', ['name', 'filename'])

them = [ Pair('joe', r'c:\aaa\blahblah.jpg'),
        Pair('john', r'c:\aaa\foobar.jpg'),
        Pair('fred', r'd:\aaa\1234.jpg')
        ]

for who in them:
    print who.name
    print who.filename

与える

joe
c:\aaa\blahblah.jpg
john
c:\aaa\foobar.jpg
fred
d:\aaa\1234.jpg
于 2013-01-31T01:05:26.607 に答える
0

変数自体ではなく、変数の名前である文字列を出力しています。

プログラムを完全に再考し、代わりに辞書を使用することをお勧めします。

users = {'joe':'c:\aaa\blahblah.jpg','john':'c:\aaa\foobar.jpg','fred':'d:\aaa\1234.jpg'}

次に、検索しusers['joe']て取得でき'c:\aaa\blahblah.jpg'ます。

ただし、文字列を使用して名前で変数を参照したい場合は、。を使用できevalます。ただし、これは非常に悪い習慣であり、常に注意して行う必要があり、できればまったく行わないでください。

于 2013-01-31T00:34:14.377 に答える
0

1次元の配列を2つ持つか、最初の配列を1次元ではなく2次元にすることができます。

だからあなたはどちらかを持っているでしょう

User_Names(x、y、z)およびUser_Photos(x、y、z)ここで、User_Photo(x)はUser_Name(x)を表し、User_Photo(y)はUser_Name(y)を表します。

または、User_Info(NameColumn、PhotoColumn)があります

そして、UserInfo(1、0)は「Joe」である可能性があり、次にUserInfo(1、1)は「c:\ aaa \ blahblah.jpg」である可能性があります)

そして、UserInfo(2、0)は「John」である可能性があり、次にUserInfo(2、1)は「c:\ aaa \ foobar.jpg」である可能性があります)

于 2013-01-31T00:40:17.140 に答える