如何为不同的名称制作不同的列表,但如果重复名称则添加到列表

时间:2016-03-02 19:47:58

标签: python list

我是编码的新手,这对我在学校的一门考试来说是一个挑战。 这是我的文本文件的样子。它存储的名称具有不同的值,指的是每次进行测验时得到的分数。

我正在尝试创建一个代码,为每个名称生成一个列表,其中包含三个值:

ChrisNatScores = [3, 3, 3]
PiersMorganScores = [1, 1, 1]
RosylynParkerScores = [8, 8, 8]

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我的建议是建立一个字典而不是依赖变量的名称。

这是一个演示,假设您的文件名为testfile.txt并且内容为:

JoeLawrence 3
JoeLawrence 3
JoeLawrence 3
PiersMorgan 1
PiersMorgan 1
PiersMorgan 1
RosylynParker 8
RosylynParker 8
RosylynParker 8

代码:

>>> from collections import defaultdict
>>> scores = defaultdict(list)
>>> with open('testfile.txt') as f:
...     for line in f:
...         name, score = line.split()
...         scores[name].append(int(score))
... 
>>> scores
defaultdict(<type 'list'>, {'RosylynParker': [8, 8, 8], 'PiersMorgan': [1, 1, 1], 'JoeLawrence': [3, 3, 3]})

如果确实想要问题中的变量名称,请继续发出:

>>> JoeLawrenceScores = scores['JoeLawrence']
>>> PiersMorganScores = scores['PiersMorgan']
>>> RosylynParkerScores = scores['RosylynParker']
>>> 
>>> JoeLawrenceScores
[3, 3, 3]