2014-12-03 61 views
0

我有这个名单:蟒蛇计数复制列表

['Boston Americans', 'New York Giants', 'Chicago White Sox', 'Chicago Cubs', 'Chicago Cubs', 'Pittsburgh Pirates', 'Philadelphia Athletics', 'Philadelphia Athletics', 'Boston Red Sox', 'Philadelphia Athletics', 'Boston Braves', 'Boston Red Sox', 'Boston Red Sox', 'Chicago White Sox', 'Boston Red Sox', 'Cincinnati Reds', 'Cleveland Indians', 'New York Giants', 'New York Giants', 'New York Yankees', 'Washington Senators', 'Pittsburgh Pirates', 'St. Louis Cardinals', 'New York Yankees', 'New York Yankees', 'Philadelphia Athletics', 'Philadelphia Athletics', 'St. Louis Cardinals', 'New York Yankees', 'New York Giants', 'St. Louis Cardinals', 'Detroit Tigers', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'Cincinnati Reds', 'New York Yankees', 'St. Louis Cardinals', 'New York Yankees', 'St. Louis Cardinals', 'Detroit Tigers', 'St. Louis Cardinals', 'New York Yankees', 'Cleveland Indians', 'New York Yankees', 'New York Yankees'] 

我怎样才能从这个名单删除重复的不使用计数,追加或set方法或进口

或者我真正想要的是:我如何可以反过来说,名单打印出来是这样的:

Boston Americans 5 
New York Giants 2 
team_name number_of_duplicates 
team_name number_of_duplicates 
team_name number_of_duplicates 
+0

要删除或只计算每个显示的时间吗? – 2014-12-03 23:57:28

+0

我希望它把名称,然后名称列表中多少次。就像我给出的例子。只是它不使用计数,追加或设置方法 – adrianhmartinez 2014-12-04 00:01:02

+1

如果不使用特定函数的原因是赋值,那么很可能会从演讲中推断出要使用的内容。通常情况下,您将排序,然后从第一个到最后一个步行,每当上一个/当前不同时,您打开一个新的“组”并打印出前一个“组”。 – eckes 2014-12-04 00:07:26

回答

2
l =['Boston Americans', 'New York Giants', 'Chicago White Sox', 'Chicago Cubs', 'Chicago Cubs', 'Pittsburgh Pirates', 'Philadelphia Athletics', 'Philadelphia Athletics', 'Boston Red Sox', 'Philadelphia Athletics', 'Boston Braves', 'Boston Red Sox', 'Boston Red Sox', 'Chicago White Sox', 'Boston Red Sox', 'Cincinnati Reds', 'Cleveland Indians', 'New York Giants', 'New York Giants', 'New York Yankees', 'Washington Senators', 'Pittsburgh Pirates', 'St. Louis Cardinals', 'New York Yankees', 'New York Yankees', 'Philadelphia Athletics', 'Philadelphia Athletics', 'St. Louis Cardinals', 'New York Yankees', 'New York Giants', 'St. Louis Cardinals', 'Detroit Tigers', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'Cincinnati Reds', 'New York Yankees', 'St. Louis Cardinals', 'New York Yankees', 'St. Louis Cardinals', 'Detroit Tigers', 'St. Louis Cardinals', 'New York Yankees', 'Cleveland Indians', 'New York Yankees', 'New York Yankees'] 

for team in [ele for ind, ele in enumerate(l,1) if ele not in l[ind:]]: 
    print("{} {}".format(team,l.count(team))) 
Boston Americans 1 
Chicago Cubs 2 
Boston Braves 1 
Chicago White Sox 2 
Boston Red Sox 4 
Washington Senators 1 
Pittsburgh Pirates 2 
Philadelphia Athletics 5 
New York Giants 4 
Cincinnati Reds 2 
Detroit Tigers 2 
St. Louis Cardinals 6 
Cleveland Indians 2 
New York Yankees 13 

不使用list.count可言:

for team in [ele for ind, ele in enumerate(l,1) if ele not in l[ind:]]: 
    count = 0 
    for ele in l: 
     if team == ele: 
      count += 1 
    print("{} {}".format(team,count)) 
    count = 0 

Boston Americans 1 
Chicago Cubs 2 
Boston Braves 1 
Chicago White Sox 2 
Boston Red Sox 4 
Washington Senators 1 
Pittsburgh Pirates 2 
Philadelphia Athletics 5 
New York Giants 4 
Cincinnati Reds 2 
Detroit Tigers 2 
St. Louis Cardinals 6 
Cleveland Indians 2 
New York Yankees 13 

你没有说你是否可以使用的字典或并非如此:

d = {} 

for team in l: 
    # if we have not seen team before, create k/v pairing 
    # setting value to 0, if team already in dict this does nothing 
    d.setdefault(team,0) 
    # increase the count for the team 
    d[team] += 1 
for team, count in d.items(): 
    print("{} {}".format(team,count)) 

Chicago White Sox 2 
New York Giants 4 
Cincinnati Reds 2 
Boston Red Sox 4 
New York Yankees 13 
Philadelphia Athletics 5 
Pittsburgh Pirates 2 
St. Louis Cardinals 6 
Washington Senators 1 
Boston Braves 1 
Boston Americans 1 
Cleveland Indians 2 
Detroit Tigers 2 
Chicago Cubs 2 
+0

你能解释一下你的代码的一部分吗? '[ele for ind,ele enumerate(l,1)if ele not in l [ind:]]' – 2015-12-10 19:04:19

+0

其实,你是否介意给出你给的字典例子?我想对此有更深入的了解。 – 2015-12-10 20:22:11

+0

@ ea87,该词典只是使用每个团队名称作为关键词,并在每次遇到新团队时将值设置为0,每个+ = 1只会增加我们词典中每个团队的计数,因此最终我们得到频率/计数为每个团队,如果我们不限于没有进口,我只会使用一个集合。计算器字典 – 2015-12-10 20:45:03

0

你可以做新的列表,例如

l = ['Boston Americans', 'New York Giants', 'Chicago White Sox', 'Chicago Cubs', 'Chicago Cubs', 'Pittsburgh Pirates', 'Philadelphia Athletics', 'Philadelphia Athletics', 'Boston Red Sox', 'Philadelphia Athletics', 'Boston Braves', 'Boston Red Sox', 'Boston Red Sox', 'Chicago White Sox', 'Boston Red Sox', 'Cincinnati Reds', 'Cleveland Indians', 'New York Giants', 'New York Giants', 'New York Yankees', 'Washington Senators', 'Pittsburgh Pirates', 'St. Louis Cardinals', 'New York Yankees', 'New York Yankees', 'Philadelphia Athletics', 'Philadelphia Athletics', 'St. Louis Cardinals', 'New York Yankees', 'New York Giants', 'St. Louis Cardinals', 'Detroit Tigers', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'Cincinnati Reds', 'New York Yankees', 'St. Louis Cardinals', 'New York Yankees', 'St. Louis Cardinals', 'Detroit Tigers', 'St. Louis Cardinals', 'New York Yankees', 'Cleveland Indians', 'New York Yankees', 'New York Yankees'] 
l2 = [] 
for v in l: 
    if v not in l2: 
     l2 = l2 + [v] 

print(l2) 

给出:

['Boston Americans', 'New York Giants', 'Chicago White Sox', 'Chicago Cubs', 'Pittsburgh Pirates', 'Philadelphia Athletics', 'Boston Red Sox', 'Boston Braves', 'Cincinnati Reds', 'Cleveland Indians', 'New York Yankees', 'Washington Senators', 'St. Louis Cardinals', 'Detroit Tigers'] 
+0

是不是问题'我怎样才能删除重复从这个列表中不使用计数,追加或设置方法或进口? – helloV 2014-12-04 00:07:10

+0

@helloV不再'追加'。谢谢。我错过了。 – Marcin 2014-12-04 00:37:52

-2
list=['Boston Americans', 'New York Giants', 'Chicago White Sox', 'Chicago Cubs', 'Chicago Cubs', 'Pittsburgh Pirates', 'Philadelphia Athletics', 'Philadelphia Athletics', 'Boston Red Sox', 'Philadelphia Athletics', 'Boston Braves', 'Boston Red Sox', 'Boston Red Sox', 'Chicago White Sox', 'Boston Red Sox', 'Cincinnati Reds', 'Cleveland Indians', 'New York Giants', 'New York Giants', 'New York Yankees', 'Washington Senators', 'Pittsburgh Pirates', 'St. Louis Cardinals', 'New York Yankees', 'New York Yankees', 'Philadelphia Athletics', 'Philadelphia Athletics', 'St. Louis Cardinals', 'New York Yankees', 'New York Giants', 'St. Louis Cardinals', 'Detroit Tigers', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'Cincinnati Reds', 'New York Yankees', 'St. Louis Cardinals', 'New York Yankees', 'St. Louis Cardinals', 'Detroit Tigers', 'St. Louis Cardinals', 'New York Yankees', 'Cleveland Indians', 'New York Yankees', 'New York Yankees'] 
list1=[] 
list2=[] 
for x in list: 
    if not x in list1: 
     list1.append(x) 
    if x in list1: 
     list2.append(x) 
list2.sort() 
for num,og in enumerate(list2,1): 
    print (num,og) 
1
players = ['Boston Americans', 'New York Giants', 'Chicago White Sox', 'Chicago Cubs', 'Chicago Cubs', 'Pittsburgh Pirates', 'Philadelphia Athletics', 'Philadelphia Athletics', 'Boston Red Sox', 'Philadelphia Athletics', 'Boston Braves', 'Boston Red Sox', 'Boston Red Sox', 'Chicago White Sox', 'Boston Red Sox', 'Cincinnati Reds', 'Cleveland Indians', 'New York Giants', 'New York Giants', 'New York Yankees', 'Washington Senators', 'Pittsburgh Pirates', 'St. Louis Cardinals', 'New York Yankees', 'New York Yankees', 'Philadelphia Athletics', 'Philadelphia Athletics', 'St. Louis Cardinals', 'New York Yankees', 'New York Giants', 'St. Louis Cardinals', 'Detroit Tigers', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'Cincinnati Reds', 'New York Yankees', 'St. Louis Cardinals', 'New York Yankees', 'St. Louis Cardinals', 'Detroit Tigers', 'St. Louis Cardinals', 'New York Yankees', 'Cleveland Indians', 'New York Yankees', 'New York Yankees'] 

players_details, players_name = [], [] 
for each_player in players: 
    if not(each_player in players_name): 
     players_name = players_name + [each_player] 
     players_details = players_details + [[each_player, 1]] 
    else: 
     for index in range(len(players_details)): 
      if players_details[index][0] == each_player: 
       players_details[index][1] = players_details[index][1]+1 

for each in players_details: 
    print '{} : {}'.format(*each) 

结果:

Boston Americans : 1 
New York Giants : 4 
Chicago White Sox : 2 
Chicago Cubs : 2 
Pittsburgh Pirates : 2 
Philadelphia Athletics : 5 
Boston Red Sox : 4 
Boston Braves : 1 
Cincinnati Reds : 2 
Cleveland Indians : 2 
New York Yankees : 13 
Washington Senators : 1 
St. Louis Cardinals : 6 
Detroit Tigers : 2 
0

要算多少每个条目的还有在列表中你可以使用Countercollections模块:

l =['Boston Americans', 'New York Giants', 'Chicago White Sox', 'Chicago Cubs', 'Chicago Cubs', 'Pittsburgh Pirates', 'Philadelphia Athletics', 'Philadelphia Athletics', 'Boston Red Sox', 'Philadelphia Athletics', 'Boston Braves', 'Boston Red Sox', 'Boston Red Sox', 'Chicago White Sox', 'Boston Red Sox', 'Cincinnati Reds', 'Cleveland Indians', 'New York Giants', 'New York Giants', 'New York Yankees', 'Washington Senators', 'Pittsburgh Pirates', 'St. Louis Cardinals', 'New York Yankees', 'New York Yankees', 'Philadelphia Athletics', 'Philadelphia Athletics', 'St. Louis Cardinals', 'New York Yankees', 'New York Giants', 'St. Louis Cardinals', 'Detroit Tigers', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'New York Yankees', 'Cincinnati Reds', 'New York Yankees', 'St. Louis Cardinals', 'New York Yankees', 'St. Louis Cardinals', 'Detroit Tigers', 'St. Louis Cardinals', 'New York Yankees', 'Cleveland Indians', 'New York Yankees', 'New York Yankees'] 

from collections import Counter 
c = Counter(l) 
print(c) 

c然后一个Counter对象,该对象为每个不同的条目/键保存列表中出现的次数。由于Counter源自dict,因此您可以像访问其他任何字典一样访问它。

Counter({'New York Yankees': 13, 'St. Louis Cardinals': 6, 'Philadelphia Athletics': 5, 'New York Giants': 4, 'Boston Red Sox': 4, 'Chicago White Sox': 2, 'Pittsburgh Pirates': 2, 'Detroit Tigers': 2, 'Cincinnati Reds': 2, 'Cleveland Indians': 2, 'Chicago Cubs': 2, 'Boston Americans': 1, 'Boston Braves': 1, 'Washington Senators': 1}) 
+0

什么与反对票在这里?这正是OP要求的?! '或者我真正想要的是:我怎么能把这个列表打印出来就像这样呢'呃,至少在他添加了无进口部分之前...... – PeterE 2014-12-04 00:13:43