我试图用Python打印一个中等大小的列表,我所做的是在一行上打印整个列表,以测试程序,确保正确的数据以正确的顺序放入列表。我读入两个文件,把所有的数据放进两本字典里。然后,我将字典分成几个部分,并将所有相似的数据放入一个列表中。我对Python非常陌生,这是我在字典上找到的教程,我有点卡住了。此行将列表打印在一行上:
print '[%s]' % ', '.join(map(str, player_list))
但这一行将列表中的每个值打印在一个单独的行上,我不想:
print '[%s]' % ', '.join(map(str, army_list))
以下是我的代码,如果需要,可以添加到列表中:
import collections
import operator
terridict = {}
gsdict = {}
terr_list = []
player_list = []
army_list = []
list_length = []
total_territories = 0
with open('territories.txt', 'r') as territory:
for line in territory:
terridict["territory"], terridict["numeric_id"], terridict["continent"] = line.split(',')
with open('gameState.txt', 'r') as gameState:
for line in gameState:
gsdict["numeric_id"], gsdict["player"], gsdict["num_armies"] = line.split(',')
terr_num = gsdict["numeric_id"]
player_num = gsdict["player"]
army_size = gsdict["num_armies"]
if terr_num >= 1 and player_num >= 1 and army_size >= 1:
terr_list.append(terr_num)
player_list.append(player_num)
army_list.append(army_size)
player_list.sort()
counter = collections.Counter(player_list)
print (counter)
total_territories = total_territories + 1
x = counter
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
counter = sorted_x
print terr_num, player_num, army_size
print counter
print "Number of territories: %d" % total_territories
print '[%s]' % ', '.join(map(str, terr_list))
print '[%s]' % ', '.join(map(str, player_list))
print '[%s]' % ', '.join(map(str, army_list))
你可能想修复现在的线条,因为行.rsplit()本身工作不太好。根据阿玛丹的话:
通过这种方式,新行字符被删除,并且可以将行设置为不涉及新行字符的条件。我试过了,结果成功了。你知道吗
line
,读入时,以换行符结尾。例如(我在这里猜):当你
split
按空格排序时,你会得到:请注意,玩家名称不会以换行符结尾,但军队大小会以换行符结尾。当你加入军队时,他们的结局是这样的:
也就是说,用换行符分隔,这使它们每行打印一条。你知道吗
为了解决这个问题,您需要在进一步处理它之前,立即在循环顶部调用} 。你知道吗
line
上的^{相关问题 更多 >
编程相关推荐