首页 > 解决方案 > 分组相同的值python

问题描述

我有这个列表,其中包含以下内容:

portugal;lisbon 1234
england;london 3214
france;paris 1928
germany;berlin 1923
portugal;lisbon 1902
spain;madrid 1764
spai;barcelona 1856
portugal;porto 5463
italy;rome 4344
netherlands;amesterdam 4444
portugal;lisbon 2999
italy;napoles 1290
russia;moscow 1999

如何将具有相同名称的行分组?

葡萄牙;里斯本出现 3 次差异值,我如何解析包含此数据的文件并将具有匹配名称的行分组到变量中?

标签: python

解决方案


您可以将其解析为字典:

raw = # ... the data here
data = {}
for line in raw.split('\n'):
    place, number = line.split()    # default is ' '
    if place in data:
        data[place].append(number)
    else:
        data[place] = [number]

这将生成一个名为data将地名映射到数字列表的字典。您可以使用以下命令使这更加简单defaultdict

from collections import defaultdict


raw = # ... the data here
data = defaultdict(list)
for line in raw.split('\n'):
    place, number = line.split()    # default is ' '
    data[place].append(number)

推荐阅读