Jadi, Anda ingin membuat daftar daftar ... Kita harus mulai dengan daftar kosong
list_of_lists = []
selanjutnya, kita membaca konten file, baris demi baris
with open('data') as f:
for line in f:
inner_list = [elt.strip() for elt in line.split(',')]
# in alternative, if you need to use the file content as numbers
# inner_list = [int(elt.strip()) for elt in line.split(',')]
list_of_lists.append(inner_list)
Kasing penggunaan umum adalah data kolom, tetapi unit penyimpanan kami adalah baris file, yang telah kami baca satu per satu, jadi Anda mungkin ingin mengubah
daftar daftar Anda. Ini bisa dilakukan dengan idiom berikut
by_cols = zip(*list_of_lists)
Penggunaan umum lainnya adalah memberi nama untuk setiap kolom
col_names = ('apples sold', 'pears sold', 'apples revenue', 'pears revenue')
by_names = {}
for i, col_name in enumerate(col_names):
by_names[col_name] = by_cols[i]
sehingga Anda dapat beroperasi pada item data yang homogen
mean_apple_prices = [money/fruits for money, fruits in
zip(by_names['apples revenue'], by_names['apples_sold'])]
Sebagian besar dari apa yang saya tulis dapat dipercepat menggunakan csv
modul, dari perpustakaan standar. Modul pihak ketiga lainnya adalah pandas
, yang memungkinkan Anda mengotomatisasi sebagian besar aspek analisis data tipikal (tetapi memiliki sejumlah dependensi).
Pembaruan Sementara di Python 2 zip(*list_of_lists)
mengembalikan daftar daftar yang berbeda (berubah), dalam Python 3 situasinya telah berubah dan zip(*list_of_lists)
mengembalikan objek zip yang tidak dapat disubkripsikan.
Jika Anda membutuhkan akses yang diindeks, Anda dapat menggunakan
by_cols = list(zip(*list_of_lists))
yang memberi Anda daftar daftar di kedua versi Python.
Di sisi lain, jika Anda tidak memerlukan akses yang diindeks dan yang Anda inginkan hanyalah membuat kamus yang diindeks dengan nama kolom, objek zip baik-baik saja ...
file = open('some_data.csv')
names = get_names(next(file))
columns = zip(*((x.strip() for x in line.split(',')) for line in file)))
d = {}
for name, column in zip(names, columns): d[name] = column