Reputation: 198
I have a CSV like this:
id,fname,lname,pdo,pdos,jabcode
1,doe,jon,10,20,10
2,dos,jons,10,20,10,11
3,de,ons,10,20,10,11,21,22
4,jam,jenn,10,20,11,22,44
5,mam,jane,10,20,16
For the last column in the CSV there could be multiple values, is there any way that I can put all the last column values into a tuple or a list?
I have written a code where I am taking all the CSV and making them into a list of dictionaries but in the last column value is returning only a single value.
My code
import csv
pList = []
with open("data.csv", 'r') as csvfile:
csvreader = csv.reader(csvfile)
for i in csvreader:
d = {}
d["id"] = i[0]
d["fname"] = i[1]
d["lname"] = i[2]
d["pdo"] = i[3]
d["pdos"] = i[4]
d["jabcode"] = i[5]
pList.append(d)
print(pList)
This is returning
[{
'id': 'id',
'jabcode': 'jabcode',
'lname': 'lname',
'pdos': 'pdos',
'pdo': 'pdo',
'fname': 'fname'
}, {
'id': '1',
'jabcode': '10',
'lname': 'jon',
'pdos': '20',
'pdo': '10',
'fname': 'doe'
}, {
'id': '2',
'jabcode': '10',
'lname': 'jons',
'pdos': '20',
'pdo': '10',
'fname': 'dos'
}, {
'id': '3',
'jabcode': '10',
'lname': 'ons',
'pdos': '20',
'pdo': '10',
'fname': 'de'
}, {
'id': '4',
'jabcode': '11',
'lname': 'jenn',
'pdos': '20',
'pdo': '10',
'fname': 'jam'
},
{
'id': '5',
'jabcode': '16',
'lname': 'jane',
'pdos': '20',
'pdo': '10',
'fname': 'mam'
}]
What I desire to get is
[{
'id': 'id',
'jabcode': 'jabcode',
'lname': 'lname',
'pdo': 'pdo',
'pdos': 'pdos',
'fname': 'fname'
}, {
'id': '1',
'jabcode': ('10'),
'lname': 'jon',
'pdos': '20',
'pdo': '10',
'fname': 'doe'
}, {
'id': '2',
'jabcode': ('10','11)',
'lname': 'jons',
'pdos': '20',
'pdo': '10',
'fname': 'dos'
}, {
'id': '3',
'jabcode': ('10','11','21','22'),
'lname': 'ons',
'pdos': '20',
'pdo': '10',
'fname': 'de'
}, {
'id': '4',
'jabcode': ('11','22','44'),
'lname': 'jenn',
'pdos': '20',
'pdo': '10',
'fname': 'jam'
},
{
'id': '5',
'jabcode': ('16'),
'lname': 'jane',
'pdos': '20',
'pdo': '10',
'fname': 'mam'
}]
Is there any pythonic way of doing it?
Upvotes: 0
Views: 54
Reputation: 979
You can do it with tuple(i[5:])
import csv
pList = []
with open("data.csv", 'r') as csvfile:
csvreader = csv.reader(csvfile)
for i in csvreader:
d = {}
d["id"] = i[0]
d["fname"] = i[1]
d["lname"] = i[2]
d["pdo"] = i[3]
d["pdos"] = i[4]
d["jabcode"] = tuple(i[5:])
pList.append(d)
print(pList)
Upvotes: 1