0

ファイルを読み取るために、76個のファイルと76個の変数を持つ2つのリストを反復しようとしています。zip(list1, list2) を使用してそれらを反復処理できると考えましたが、何らかの理由で機能していません。これが私がやっていることです:

list1=['file1', 'file2', 'file3']
list2=['v1','v2','v3']
for i,j in zip(list1,list2):
    j=pyfits.getdata(i)       #just trying to read a FITS file

代わりに print で同じことを行うと、うまく機能します。

list1=['file1', 'file2', 'file3']
list2=['v1','v2','v3']
for i,j in zip(list1,list2):
    print i, j

何か案は?

4

3 に答える 3

3
j=pyfits.getdata(i)

この行は、名前が に格納されている変数にデータを格納しませんj。代わりに、変数にデータを格納しますj。代わりに、データのリストを作成する必要があります。

data = [pyfits.getdata(filename) for filename in list1]

data[0]これにより、最初のファイルdata[1]のデータ、2 番目のファイルのデータなどのリストが作成されます。

于 2013-08-13T20:14:31.973 に答える
2

list2返される配列に文字列を割り当てようとしていると思いpyfits.getdata()ます。ただし、list2文字列が含まれており、この方法で配列を文字列に割り当てることはできません。それを行うためのハックな方法がいくつかありますが、Python では良い習慣ではありません。list2文字列を辞書のキーにすることができる辞書を使用することをお勧めします。

次に例を示します。

data = {}
list1=['file1', 'file2', 'file3']
list2=['v1','v2','v3']
for i,j in zip(list1,list2):
    data[j] = pyfits.getdata(i)

data[v1]その後、data[v2]、 などを使用してデータにアクセスできます。

于 2013-08-13T20:14:16.643 に答える
0

関数を使用できmapます:

list2 = map(pyfits.getdata,list1)
zip(list1,list2) #not needed here

そしてかなりの辞書を作成した後

di = dict(zip(list1,list2))

diのような構造になります{filename1:data1,filename2,data2}

于 2013-08-13T20:48:38.113 に答える