我有一个按列表的第二个值(组)排序的列表列表。我现在需要遍历这个以一次处理每个“组”。数据是[name, group, data1, data2, data3, data4].
我不确定我是否需要一段时间或其他类型的循环,或者groupby
但我从未使用过它。任何帮助将不胜感激。
for i in range (int(max_group)):
x1 = []
x2 = []
x3 = []
x4 = []
if data[i][1] == i+1:
x1.append(data[2])
x2.append(data[3])
x3.append(data[4])
x4.append(data[5])
print x1
print 'next' # these are just to test where we're at
所有x应该包含所有组1信息的所有第3至第5列数据(在名称和组号之后)。然后我可以使用第1组信息并转到第2组。
答案 0 :(得分:1)
for i in sorted(set(group[1] for group in data)):
x1, x2, x3, x4 = zip(*(group[2:] for group in data if group[1] == i))
注意:此解决方案效率很低,我会在一分钟内提高效率!
groups = {}
for d in data:
try:
groups[d[1]].append(d[2:])
except AttributeError:
groups[d[1]] = d[2:]
for i in sorted(j for j in groups):
x1, x2, x3, x4 = zip(*groups[i])
这只是稍微不那么难看,但应该有效
答案 1 :(得分:0)
假设列表中的列表是
mylist = [[name],[add],[data1],[data2]]
迭代列表中的每个列表,您应该尝试以下代码:
for each_list in mylist:
if isinstance(each_list,list):
#do something with that list inside list
很抱歉,如果这个答案与你的问题不符。