2014-11-22 118 views
0

我有这个就可以了(还有个名字).txt文件:Python列表格式

Boston Americans 
New York Giants 
Chicago White Sox 
Chicago Cubs 
Chicago Cubs 
Pittsburgh Pirates 

我创建了一个清单,然后做了多少次,我得到相同的队伍计数。

然后我得到这个:

[['New York Giants', 5], ['Anaheim Angels', 1], ['Detroit Tigers', 4], ['St. Louis Cardinals', 11], ['Minnesota Twins', 2], ['Florida Marlins', 2], ['Boston Red Sox', 7], ['Oakland Athletics', 4], ['Los Angeles Dodgers', 5], ['Philadelphia Athletics', 5] 

我如何可以反过来说,名单出来是这样的:

New York Giants (\t tab) 5 
Anaheim Angels (tab) 1 
Detroit Tigers (tab) 4   <----- with all the numbers centered 
St. Louis Cardinals (tab) 11 
Minnesota Twins (tab) 2 

回答

0

简单地用'\t'加入您的嵌套列表字符串:

newlist = ['\t'.join(map(str, sublist)) for sublist in outerlist] 

需要map(str, ...)将您的计数转换为字符串。

然而,数字并不一定以居中为准;选项卡字符会将“光标”移动到下一个选项卡位置,如果前面的文本不够长,这可能比您预期的要早。

您可以简单地使用字符串格式来填充第一列的空格;你可以在第一列的最大长度为基础的:

max_team_width = max(len(item[0]) for item in outerlist) 
max_count_width = max(len(str(item[1])) for item in outerlist) 
for item in outerlist: 
    print('{item[0]:{team_width}} {item[1]:{count_width}d}'.format(
     team_width=max_team_width, count_width=max_count_width, item=item)) 

打印的项目,但你也可以只将结果添加到列表中仍然。

后者生产:

>>> team_counts = [ 
...  ['New York Giants', 5], 
...  ['Anaheim Angels', 1], 
...  ['Detroit Tigers', 4], 
...  ['St. Louis Cardinals', 11], 
...  ['Minnesota Twins', 2], 
... ] 
>>> max_team_width = max(len(item[0]) for item in team_counts) 
>>> max_count_width = max(len(str(item[1])) for item in team_counts) 
>>> for item in team_counts: 
...  print('{item[0]:{team_width}} {item[1]:{count_width}d}'.format(
...   team_width=max_team_width, count_width=max_count_width, item=item)) 
... 
New York Giants  5 
Anaheim Angels  1 
Detroit Tigers  4 
St. Louis Cardinals 11 
Minnesota Twins  2 

而制表单独的输出可以用来生产:

>>> for item in team_counts: 
...  print('\t'.join(map(str, item))) 
... 
New York Giants 5 
Anaheim Angels 1 
Detroit Tigers 4 
St. Louis Cardinals 11 
Minnesota Twins 2 
+0

如何将我转换列表中为str:newlist = [ '\ T'。在子列表中加入(子列表)子列表] – adrianhmartinez 2014-11-22 18:55:25

+0

@adrianhmartinez:你可以在外部子列表中使用子列表:print('\ t'.join(子列表))'打印出加入制表符的字符串。 – 2014-11-22 18:58:17

+0

当我做newlist = ['\ t'.join(map(str,sublist))为count列表中的子列表]它打印“\ t”,它实际上并没有选项卡。 – adrianhmartinez 2014-11-22 21:31:09