data = [['5th ave', 111, -30.00, 38.00],
['5th ave', 222, -30.00, 33.00],
['6th ave', 2224, -32.00, 34.90]]
previous = ""
listOfData = []
result = []
for currentItem in data:
if currentItem[0] != previous:
if listOfData:
result.append([previous, listOfData])
listOfData = []
previous = currentItem[0]
listOfData.append(currentItem[1:])
if listOfData:
result.append([previous, listOfData])
print result
出力
[['5th ave', [[111, -30.0, 38.0], [222, -30.0, 33.0]]], ['6th ave', [[2224, -32.0, 34.9]]]]
これにより、順序も維持されます。
編集:
defaultdict
私は数行を減らすことができました
from collections import defaultdict
data = [['5th ave', 111, -30.00, 38.00],
['5th ave', 222, -30.00, 33.00],
['6th ave', 2224, -32.00, 34.90]]
unique, Map = [], defaultdict(list)
for item in data:
if item[0] not in unique: unique.append(item[0])
Map[item[0]].append(item[1:])
print [(item, Map[item]) for item in unique]
これはまだ秩序を維持しています。