Python, bir işlevden döndürülen sözlüklerin bir listesini kullan
Sözlüklerin listesini döndürmeye ve ardından onu işlevin dışında kullanmaya çalışıyorum:
def myfunc():
fileName: some file on my system
with open(fileName) as csv1:
dataDict = csv.DictReader(csv1, delimiter=',')
return dataDict
Ancak t işlevini çağırdığımda, "ValueError: Kapalı dosyada G / Ç işlemi" hatası alıyorum.
myDict = myfunc()
for row in myDict:
print(row)
Bir sözlük listesini nasıl beyan etmeli ve kullanmalıyım? Sözlük döndürüldüğünde, alan adlarına da erişmem gerekiyor. Herhangi bir ipucu veya yardım çok takdir edilmektedir.
Yanıtlar
with
İfadesi otomatik olarak dosyayı kapatır. DictReader aracılığıyla verilere ifadenin dışında erişmeye çalıştığınızda, DictReader with
kapalı dosyaya erişemez ve böylece IOError'ı alırsınız.
İşlevden dönmeden önce dosyadaki satırları bir liste halinde toplayarak bunu aşabilirsiniz:
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 tembeldir. Aslında onu bir listeye dönüştürün ve onu geri döndürün, böylece dosya hala açıkken okunur.
def myfunc():
fileName: some file on my system
with open(fileName) as csv:
return list(csv.DictReader(csv, delimiter=','))
Onu başka bir değişkene kopyalayıp geri döndürebilirsiniz ...
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
sütun adlarını csv içindekilerle değiştirin.