2013-10-29 158 views
0

嘿即时通讯开始学习Python和循环功能后,我得到了它看起来像这样在python比较列表

>>>print test 

['a','b','c','d'] 
['a','c','d','e'] 
['b','d','e','f'] 

我想比较一下,发现东西一样路口名单,但因为这两个名单下一个名字我无法完成。

我想比较列表并计算字母。后市展望:

d, 3 
a, 2 
b, 2 

有人能帮助我吗?

问候

+4

根据给出的内容,没有Python列表打印出来。假设你实际上拥有的是一个列表列表,只需依次遍历每个列表来计算事物('对于测试中的子列表:对于子列表中的项目:做东西')。 StackOverflow中有无数的问题可以处理一个字符的出现次数。 –

+0

你想比较什么?你的目标似乎是计算每个字母的全球出现......为此,请使用'list.count'。 –

回答

4

如果你有名单列表中,那么你可以使用collections.Counter来算字母:

>>> from collections import Counter 
>>> test = [['a','b','c','d'],['a','c','d','e'],['b','d','e','f']] 
>>> Counter(i for x in test for i in x) 
Counter({'d': 3, 'a': 2, 'c': 2, 'b': 2, 'e': 2, 'f': 1}) 

,或者如inspectorG4dget的意见建议,使用itertools.chain.from_iterable

>>> import itertools 
>>> from collections import Counter 
>>> test = ['test','test2'] 
>>> Counter(itertools.chain.from_iterable(test)) 
Counter({'t': 4, 's': 2, 'e': 2, '2': 1}) 
+0

好的,谢谢,我明白它工作正常。但如果你有,而不是字母单词怎么办? F.E. :['test','test2'] – CloudySi

+1

'itertools.chain.from_iterable' - 你不需要手动展平列表 – inspectorG4dget

+0

谢谢。如果我想数字的话?因此输出将是:'test':1'test2':1 – CloudySi