首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将字母与其值关联,并在python中对输出进行排序

将字母与其值关联,并在python中对输出进行排序
EN

Stack Overflow用户
提问于 2018-08-02 07:34:10
回答 1查看 20关注 0票数 0

请在这方面提供帮助。我的输入如下所示:

 a = """A|9578
 C|547
 A|459
 B|612
 D|53
 B|6345
 A|957498
 C|2910"""

我想以排序的方式打印与每个字母相关的数字,如下所示:

 A_0|459
 A_1|957498
 A_2|9578
 C_0|2910
 C_1|547
 B_0|612
 B_1|6345
 D_0|53

到目前为止,我可以在数组b中存储字母和数字,但是当我尝试创建类似字典的数组来连接单个字母和它的值时,我遇到了这个错误。

 b = [i.split('|') for i in a.split('\n')]
 c = dict()
 d = [c[i].append(j) for i,j in b]
 >>> d = [c[i].append(j) for i,j in b]
 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "<stdin>", line 1, in <listcomp>
 TypeError: list indices must be integers or slices, not str

我正在开发python 3.6以防万一。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-02 07:54:35

我们将字符串拆分成对,对这些对进行排序,然后使用groupbyenumerate得出索引。

from itertools import groupby
from operator import itemgetter

def process(a):
    pairs = sorted(x.split('|') for x in a.split())
    groups = groupby(pairs, key=itemgetter(0))
    for _, g in groups:
        for index, (letter, number) in enumerate(g):
            yield '{}_{}|{}'.format(letter, index, number)

for i in process(a): print(i)

给了我们

A_0|459
A_1|957498
A_2|9578
B_0|612
B_1|6345
C_0|2910
C_1|547
D_0|53
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51643619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档