2013-10-29 213 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