繁体   English   中英

如何在python中的字典中添加嵌套列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM