Python 将列表转换为行
在python中,什么是将列表转换为单独元素的有效方法 我有一个看起来像这样的数据集Python 将列表转换为行,python,list,Python,List,在python中,什么是将列表转换为单独元素的有效方法 我有一个看起来像这样的数据集 ['StudentA','80','94','93'] ['StudentB','93','94'] 我想重塑数据,使每个学生/分数都有自己的行 ['StudentA','80'] ['StudentA','94'] etc... 您可以使用列表理解,如下所示: data = ['StudentA','80','94','93'] res = [[data[0], x] for x in data[1:]]
['StudentA','80','94','93']
['StudentB','93','94']
我想重塑数据,使每个学生/分数都有自己的行
['StudentA','80']
['StudentA','94']
etc...
您可以使用列表理解,如下所示:
data = ['StudentA','80','94','93']
res = [[data[0], x] for x in data[1:]]
这将res
设置为[[['StudentA',80'],['StudentA',94'],['StudentA',93']
如果它是一个包含这些行的列表(所有学生
),您可以通过执行以下操作来执行您想要的操作:
result = []
for student in all_students:
student_name = student[0]
result.extend([[student_name, value] for value in student[1:]]
print(result)
使用
字典
将学生与其各自的数据配对
def to_dict(l):
d = {}
for i in l:
key = i[0]
value = i[1:]
d[key] = value
return d
样本输出:
l = [['studentA', 90, 90],['studentB', 78, 40]]
print to_dict(l)
>>> {'studentB': [78, 40], 'studentA': [90, 90]}
for key, value in d.iteritems():
for i in value:
print key, i
>>> studentB 78
>>> studentB 40
>>> studentA 90
>>> studentA 90
此口述理解将按学生姓名对您的数据进行分组:
d = {x[0]: x[1:] for x in dataset}
i、 e:
您可以从中提取具有嵌套for循环或列表理解的单个对:
>>> [(k, w) for k, v in d.items() for w in v]
[('StudentA', '80'), ('StudentA', '94'), ('StudentA', '93'), ('StudentB', '93'), ('StudentB', '94')]
您的数据集已经有多行。到目前为止您尝试了什么?学生的名字会一直是列表的第一个元素吗?这个集合有可能是这样的吗<代码>['80','StudentA','94','93']道歉。学生将始终是第一要素,但每个要素都不会有一组统一的分数关联。您在
sudent[1://code>中漏掉了一个“t”;您可能希望更正这一点,以便您的示例运行时不会出现任何错误。
>>> d
{'StudentA': ['80', '94', '93'], 'StudentB': ['93', '94']}
>>> [(k, w) for k, v in d.items() for w in v]
[('StudentA', '80'), ('StudentA', '94'), ('StudentA', '93'), ('StudentB', '93'), ('StudentB', '94')]