-1

我确信这很简单,但是在谷歌搜索一个小时后(python 新手),我仍然不确定用谷歌来解决我的问题 :( 你可以从我当前的代码和我想要的结果中看到我正在努力实现!

谢谢马特。

代码 :

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

您正在打印一个恰好是变量名称的字符串,而不是变量本身。

您可能想要完全重新考虑您的程序并改用字典。

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

要么你可以有两个单维数组,要么你让你的初始数组是二维的而不是一维的

所以要么你会

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 回答
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 回答