Python在列表中组合名称输出name和coun

2024-07-08 10:40:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个写着名字的文本文件:

Baltimore Colts
Dallas Cowboys
Dallas Cowboys
Dallas Cowboys
Denver Broncos
Green Bay Packers
Dallas Cowboys
Indianapolis Colts
Indianapolis Colts

我用python列了一个清单,上面有所有的名字:

[Baltimore Colts, Dallas Cowboys, Dallas Cowboys, Dallas Cowboys, Denver Broncos, Dallas Cowboys, Indianapolis Colts, Indianapolis Colts]

我怎样才能把这个清单变成这样:

Baltimore Colts      1
Dallas Cowboys       4
Denver Broncos       1
Green Bay Packers    1          <--------- with the numbers centered
Indianapolis Colts   2

它读取名称,然后计算列表中有多少次转到另一个名称。你知道吗


Tags: the名称withgreen名字文本文件baydenver
2条回答

使用Counter

from collections import Counter

teams = ['Baltimore Colts',
         'Dallas Cowboys',
         'Dallas Cowboys',
         'Dallas Cowboys',
         'Denver Broncos',
         'Dallas Cowboys',
         'Indianapolis Colts',
         'Indianapolis Colts']
c = Counter(teams)
# Counter({'Dallas Cowboys': 4, 'Indianapolis Colts': 2, 'Denver Broncos': 1, 'Baltimore Colts': 1})
print c['Dallas Cowboys']
# Prints 4

从文件中读取列表是另一回事:

with open(filename, 'r') as f:
    teams = f.readlines()
l = ['Baltimore Colts', 'Dallas Cowboys', 'Dallas Cowboys', 'Dallas Cowboys', 'Denver Broncos', 'Dallas Cowboys', 'Indianapolis Colts', 'Indianapolis Colts']

使用collections.Counter统计每个团队的出现次数

counts = Counter(l)

>>> counts
Counter({'Dallas Cowboys': 4, 'Indianapolis Colts': 2, 'Baltimore Colts': 1, 'Denver Broncos': 1})  

然后使用format左右对齐列。你知道吗

for team in counts:
    print('{:<20} {:>2}'.format(team, counts[team]))

输出

Baltimore Colts       1
Denver Broncos        1
Indianapolis Colts    2
Dallas Cowboys        4

相关问题 更多 >

    热门问题