[英]How to add nested list in a dictionary in python
我有看起来像这样的嵌套列表
my_list = [[1,'raj','CSE'],[2,'kumar','MECH'],[3,'Nisha','ECE']]
由于我需要将其导出为CSV格式,因此我希望将其转换为字典。 我的输出应该是这样的。
my_dict = {'id':[1,2,3],'Name':['raj','kumar','Nisha'],'Course':['CSE','MECH','ECE']}
我该如何实现???
使用zip
轻松完成:
l = [[1,'raj','CSE'],[2,'kumar','MECH'],[3,'Nisha','ECE']]
d = dict(zip(['Id', 'Name', 'Course'], map(list, (zip(*l)))))
d
# {'Course': ['CSE', 'MECH', 'ECE'],
# 'Id': [1, 2, 3],
# 'Name': ['raj', 'kumar', 'Nisha']}
由于您要先将其转换为字典,然后再将其保存为csv,因此我假设您使用的是熊猫(否则将其保存为现有格式会更容易)。 这很容易做到:
df = pd.DataFrame(d) # `d` is from the code snippet above.
df
Course Id Name
0 CSE 1 raj
1 MECH 2 kumar
2 ECE 3 Nisha
df.to_csv('test.csv')
另外,如果你不想用大熊猫,只是这样做:
l = [[1,'raj','CSE'],[2,'kumar','MECH'],[3,'Nisha','ECE']]
with open('test.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow(['Id', 'Name', 'Course'])
writer.writerows(l)
在这种情况下,您不需要转换为字典。
@Coldspeed非常优雅的解决方案的替代方法:
headers = ['id', 'Name', 'Course']
my_list = [[1,'raj','CSE'],[2,'kumar','MECH'],[3,'Nisha','ECE']]
my_dict = {k: [x[i] for x in my_list] for i, k in enumerate(headers)}
print(my_dict) # {'Name': ['raj', 'kumar', 'Nisha'], 'Course': ['CSE', 'MECH', 'ECE'], 'id': [1, 2, 3]}
如果您只想将其导出到csv,Pandas非常方便:
import pandas as pd
pd.DataFrame(my_list, columns=['id','Name','Course']).to_csv("Name.csv")
一个简单而优雅的方式是通过zip
函数:
my_list = [[1,'raj','CSE'],[2,'kumar','MECH'],[3,'Nisha','ECE']]
ids, names, courses = map(list, zip(*my_list))
my_dict = {'id': ids, 'Name': names, 'Course': courses}
答案很简单:
my_dict={
'id':[a[0] for a in my_list],
'Name': [a[1] for a in my_list],
'Course':[a[2] for a in my_list]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.