以下是我的问题:
data = ['a1_1 00000001\n', 'a1_2 00000002\n', 'a1_3 00000003\n',
'b1_1 00000004\n', 'b1_2 00000005\n', 'b1_3 00000006']
candidate = ['a', 'b']
for i in candidate:
for j in data:
if i in j.split()[0]:
print i, j.split()[1]
a 00000001
a 00000002
a 00000003
b 00000004
b 00000005
b 00000006
Run Code Online (Sandbox Code Playgroud)
但我想要做的是如下结果:
a 00000001, 00000002, 00000003
b 00000004, 00000005, 00000006
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?提前致谢!
data = ['a1_1 00000001\n', 'a1_2 00000002\n', 'a1_3 00000003\n', 'b1_1 00000004\n', 'b1_2 00000005\n', 'b1_3 00000006']
candidate = ['a', 'b']
for i in candidate:
print i, ', '.join(v for k,v in (a.split() for a in data) if k.startswith(i))
Run Code Online (Sandbox Code Playgroud)
打印:
a 00000001, 00000002, 00000003
b 00000004, 00000005, 00000006
Run Code Online (Sandbox Code Playgroud)
然而,这将经历data几次(每次一次candidate).要做一次,你需要一个中间词典:
d = {}
for a in data:
d.setdefault(a[0], []).append(a.split()[1])
for k,v in sorted(d.iteritems()):
print k, ', '.join(v)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |