沒有其他的內置方法,但你可以使用字典組:
from collections import defaultdict
d = defaultdict(list)
s = """id1 V1 100
id1 V2 200
id1 V3 0
id2 V1 30
id2 V2 400
id2 V3 1"""
for a, _, c in map(str.split, s.splitlines()):
d[a].append(c)
print(["{},{}".format(k,",".join(v)) for k,v in d.items()]
['id2,30,400,1', 'id1,100,200,0']
如果你想輸出很好地對齊,你可以這樣做this如果你想維持秩序
,使用OrderedDict:
from collections import OrderedDict
d = OrderedDict()
s = """id1 V1 100
id1 V2 200
id1 V3 0
id2 V1 30
id2 V2 400
id2 V3 1"""
for a, _, c in map(str.split, s.splitlines()):
d.setdefault(a, []).append(c)
如果是在一個文件,你可以用CSV LIB解析它:
import csv
from collections import OrderedDict
d = OrderedDict()
with open("in.txt") as f:
for k, _, v in csv.reader(f, delimiter=" "):
d.setdefault(k, []).append(v)
的OrderedDict輸出:
OrderedDict([('id1', ['100', '200', '0']), ('id2', ['30', '400', '1'])])
任何內建將使用循環。沒有? – Signal