Python, gunakan daftar kamus yang dikembalikan dari suatu fungsi
Saya mencoba mengembalikan daftar kamus dan kemudian menggunakannya di luar fungsi:
def myfunc():
fileName: some file on my system
with open(fileName) as csv1:
dataDict = csv.DictReader(csv1, delimiter=',')
return dataDict
Tapi ketika saya memanggil fungsi t, saya mendapatkan error "ValueError: Operasi I / O pada file tertutup."
myDict = myfunc()
for row in myDict:
print(row)
Bagaimana saya harus mendeklarasikan dan menggunakan daftar kamus? Setelah kamus dikembalikan, saya juga perlu mengakses nama bidangnya. Kiat atau bantuan apa pun sangat dihargai.
Jawaban
The with
pernyataan secara otomatis menutup file. Saat Anda mencoba mengakses data melalui DictReader di luar with
pernyataan, DictReader tidak dapat mengakses file yang ditutup, sehingga Anda mendapatkan IOError.
Anda bisa menyiasatinya dengan mengumpulkan baris dari file ke dalam daftar sebelum kembali dari fungsi:
def myfunc():
fileName: some file on my system
with open(fileName) as csv1:
dataDict = csv.DictReader(csv1, delimiter=',')
list_of_dicts = list(datadict)
return list_of_dicts
DictReader malas. Sebenarnya mengubahnya menjadi daftar dan mengembalikannya, sehingga file dibaca saat masih terbuka.
def myfunc():
fileName: some file on my system
with open(fileName) as csv:
return list(csv.DictReader(csv, delimiter=','))
Anda dapat menyalinnya ke variabel lain dan mengembalikan ...
def myfunc():
fileName: some file on my system
mydict = {}
with open(fileName) as f:
for row in csv.DictReader(f, delimiter=','):
mydict[row['first_column']] = row['second_column'] + row['third_column']
return mydict
ganti nama kolom dengan yang ada di csv.