В случае Ваши данные уже не отсортированы по желаемым критериям, вот код, который мог бы помочь сгруппировать данные:
#!/usr/bin/env python
"""
$ cat data_shuffled.txt
0,2,7
1,4,7
0,4,7
1,9,0
1,2,5
0,6,7
1,6,8
0,9,5
"""
from itertools import groupby
from operator import itemgetter
# load the data and make sure it is sorted by the first column
sortby_key = itemgetter(0)
data = sorted((map(int, line.split(',')) for line in open('data_shuffled.txt')),
key=sortby_key)
# group by the first column
grouped_data = []
for key, group in groupby(data, key=sortby_key):
assert key == len(grouped_data) # assume the first column is 0,1, ...
grouped_data.append([trio[1:] for trio in group])
# print the data
for i, pairs in enumerate(grouped_data):
print i, pairs
Вывод:
0 [[2, 7], [4, 7], [6, 7], [9, 5]]
1 [[4, 7], [9, 0], [2, 5], [6, 8]]
Посмотрите на это http://blogs.msdn.com/oldnewthing/archive/2006/08/01/685248.aspx
Я специально смотрю на
Другими словами, внутренние классы Java синтаксический сахар, который недоступен в C #. В C # это нужно делать вручную.
Если хотите, можете создать свой сахар:
class OuterClass { ... InnerClass NewInnerClass () { вернуть новый InnerClass (это); } void SomeFunction () { InnerClass i = this.NewInnerClass (); i.GetOuterString (); } }
Где вы хотите писать на Java новый o.InnerClass (...) вы можете написать в C # либо o.NewInnerClass (...), либо новый Внутренний класс (о, ...). Да это просто куча перестановок нового слова вокруг. Как я уже сказал, это просто сахар.
Вы можете иметь статический вложенный класс в C # в соответствии с Вложенными классами .
Все вложенные классы C # подобны статическим вложенным классам Java:
C #:
class Outer
{
class Inner
{
}
}
Похоже на Java:
class Outer
{
static class Inner
{
}
}
Другими словами, экземпляр Inner
не имеет неявной ссылки на экземпляр Outer
.
Там нет эквивалент Java внутреннего класса в C #.
Однако правила доступности несколько различаются между двумя языками: в C # код во вложенном классе имеет доступ к закрытым членам в содержащем классе; в Java - наоборот.