2016-03-05 61 views
-4

在Python中,我有以下列表:Python的计数列表和类型

['personA', 'banana'] 
['personB', 'banana'] 
['personA', 'grape'] 
['personA', 'lemon'] 
['personA', 'lemon'] 
['personB', 'banana'] 

如何在下面的表格获取列表:

['personA', 'lemon', 2 ] 
['personB', 'banana', 2] 

我都数不过来有多少次水果发生在一个人身上。
(我已经概括了水果的问题)
对于那些downvoted:如果我发布时做错了,我可以理解挫折。我是一个新成员,所以如果你倒退了,请提一下你的问题,这样我就可以考虑下一个问题。

+1

那么你会如何去了解这一点,如果你这样做在纸上?你能解决这个问题吗? –

+0

在你的输出中,personA发生了什么?你只想要最常见的水果? – timgeb

+0

请在你的问题中包括你到目前为止所尝试的内容。 – h7r

回答

0
newlist = [] 
for sublist in yourlist: 
    already_in_list = False 
    for index, newsublist in enumerate(newlist): 
     if sublist == newsublist[:-1]: 
      newlist[index][2] += 1 
      already_in_list = True 
    if not already_in_list: 
     newlist.append(sublist+[1]) 

使用列表的count方法 -

>>>newlist 
[['personA', 'banana', 1], ['personB', 'banana', 2], ['personA', 'grape', 1], ['personA', 'lemon', 2]] 
1

你为什么不使用collections.Counter,你可以尽管

your_list = [['personA', 'banana'], ['personB', 'banana'], ['personA', 'grape'], ['personA', 'lemon'], ['personA', 'lemon'], ['personB', 'banana']] 

for i in your_list: 
    print(i, your_list.count(i))