Python Append From Text 文件输出错误
Python Append From Text file outputs error
我目前正在测试我的程序的第三阶段,这个错误在下面这段代码的测试过程中反复出现:
我正在尝试将一些值读入字典并打印字典以显示每个用户的最后三个分数(我最初选择 4,但我改变了设计思路。)代码如下:
import collections
from collections import defaultdict
worker_scores = collections.defaultdict(lambda: collections.deque(maxlen=3))
import operator
with open('score_names.txt') as f:
for line in f:
worker,score = line.split(":")
worker_scores[worker].append(int(score))
for name in sorted(program_scores):
print(name," ".join(map(str,program_scores[worker])))
文本文件也显示如下:
AdamJohnson:10
AdamJohnson:20
AdamJohnson:30
AdamJohnson:40
AdamJohnson:50
AdamJohnson:60
MichaelJordan:70
MichaelJordan:80
MichaelJordan:90
MichaelJordan:100
DavidSnowman:110
DavidSnowman:120
DavidSnowman:130
DavidSnowman:140
现在,如果文本文件只包含 AdamJohnson,如图所示:
AdamJohnson:10
AdamJohnson:20
AdamJohnson:30
AdamJohnson:40
AdamJohnson:50
AdamJohnson:60
然后 IDLE 正确打印:
AdamJohnson 40 50 60
但是当 MichaelJordan 和 DavidSnowman 存在时,我希望 IDLE 显示:
AdamJohnson 40 50 60
MichaelJordan 80 90 100
MichaelJordan 120 130 140
然而,却出现了这个错误:
Traceback (most recent call last):
File "/Users/Ahmad/Desktop/TESTS/Task 3/Dictionary copy.py", line 8, in <module>
worker,score = line.split(":")
ValueError: need more than 1 value to unpack
如何解决这个问题以确保打印时在 IDLE 中获得我想要的结果?
谢谢,德尔伯特。
更新 代码现在可以运行,但分数打印不正确...请参阅此代码:
AdamJohnson 120 130 140
DavidSnowman 120 130 140
MichaelJordan 120 130 140
为什么会这样???
当你在最后打印分数时,你是通过变量 worker
查找它们,它在你的循环中不会改变,而不是 name
.
我目前正在测试我的程序的第三阶段,这个错误在下面这段代码的测试过程中反复出现:
我正在尝试将一些值读入字典并打印字典以显示每个用户的最后三个分数(我最初选择 4,但我改变了设计思路。)代码如下:
import collections
from collections import defaultdict
worker_scores = collections.defaultdict(lambda: collections.deque(maxlen=3))
import operator
with open('score_names.txt') as f:
for line in f:
worker,score = line.split(":")
worker_scores[worker].append(int(score))
for name in sorted(program_scores):
print(name," ".join(map(str,program_scores[worker])))
文本文件也显示如下:
AdamJohnson:10
AdamJohnson:20
AdamJohnson:30
AdamJohnson:40
AdamJohnson:50
AdamJohnson:60
MichaelJordan:70
MichaelJordan:80
MichaelJordan:90
MichaelJordan:100
DavidSnowman:110
DavidSnowman:120
DavidSnowman:130
DavidSnowman:140
现在,如果文本文件只包含 AdamJohnson,如图所示:
AdamJohnson:10
AdamJohnson:20
AdamJohnson:30
AdamJohnson:40
AdamJohnson:50
AdamJohnson:60
然后 IDLE 正确打印:
AdamJohnson 40 50 60
但是当 MichaelJordan 和 DavidSnowman 存在时,我希望 IDLE 显示:
AdamJohnson 40 50 60
MichaelJordan 80 90 100
MichaelJordan 120 130 140
然而,却出现了这个错误:
Traceback (most recent call last):
File "/Users/Ahmad/Desktop/TESTS/Task 3/Dictionary copy.py", line 8, in <module>
worker,score = line.split(":")
ValueError: need more than 1 value to unpack
如何解决这个问题以确保打印时在 IDLE 中获得我想要的结果?
谢谢,德尔伯特。
更新 代码现在可以运行,但分数打印不正确...请参阅此代码:
AdamJohnson 120 130 140
DavidSnowman 120 130 140
MichaelJordan 120 130 140
为什么会这样???
当你在最后打印分数时,你是通过变量 worker
查找它们,它在你的循环中不会改变,而不是 name
.