0

リストの2番目の値(グループ)でソートされたリストのリストがあります。一度に各「グループ」で作業するには、これを繰り返す必要があります。データは[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に進むことができます。

4

2 に答える 2

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])

これはわずかに醜いものではありませんが、うまくいくはずです

于 2012-12-05T05:01:05.457 に答える
0

リスト内のリストが

mylist = [[name],[add],[data1],[data2]]

リスト内の各リストを反復処理するには、次のコードを試してください。

for each_list in mylist:
    if isinstance(each_list,list):
         #do something with that list inside list

この回答があなたの質問と一致しない場合は申し訳ありません。

于 2012-12-05T05:05:39.793 に答える