python - 对数组中的特定值进行分组

标签 python arrays python-3.x

假设我有一个像这样的数组:

namesscore = ["Rory: 1", "Rory: 4", "Liam: 5", "Liam: 6", "Erin: 8", "Liam: 2",]

我想对该数组进行排序,使其像这样:

namescore = ["Rory: 1, 4", "Liam: 5, 6, 2", "Erin: 8"]

我该怎么做?

最佳答案

我会迭代列表,并为每个项目将其拆分为名称和分数。然后,我创建一个字典(更准确地说:一个 OrderedDict,以保留顺序)并累积每个名称的分数。迭代完成后,可以将其转换为所需格式的字符串列表:

from collections import OrderedDict

def group_scores(namesscore):
    mapped = OrderedDict()
    for elem in namesscore:
        name, score = elem.split(': ')
        if name not in mapped:
            mapped[name] = []
        mapped[name].append(score)

    return ['%s%s%s' % (key, ': ', ', '.join(value)) for \
              key, value in mapped.items()]

关于python - 对数组中的特定值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33056547/

相关文章:

ios - 获取唯一对象数组

python - 如何替换python中特定单词下的值?

python - OpenCV 找不到网络摄像头,但 Cheese 可以

python - 获取 pandas 中连续行中唯一值的个数

python - 存储和检索大型稀疏矩阵

python - 如何在aiohttp中重定向post请求?

python - 如何在csv文件中将一列乘以另一列并重写

python - 将相似范围的数字组合在一起的功能?

c++ - 警告: "when type is in parentheses, array cannot have dynamic size"?的原因是什么

ruby-on-rails - 检查数组的每个元素是否包含在另一个数组的一组值中