2011-05-27 73 views
0

使用Python,我试图打印出一张表格,其中包含基于一组数据的整理信息。对多个变量进行分组并计数唯一组合的数量

Data 1 - 'Car', 'Cadillac','Blue'

Data 2 - 'Car', 'Aston Martin','Black'

Data 3 - 'Car', 'Cadillac', 'Blue'

现在我需要找到相同的组合发生的次数 - 即我想打印的'Car'组合,'Cadillac''Blue'出现两次,另一次出现一次。我如何在Python中做到这一点?

编辑:我正在使用Python 2.4!

+0

看起来像功课 – tback 2011-05-27 10:31:55

+0

我是一个初学者,其实。你至少能告诉我哪个数据类型开头? – GPX 2011-05-27 10:32:52

+0

但是 - 如果它的功课:请使用标签'家庭作业'! – phynfo 2011-05-27 10:36:25

回答

2

首先对字符串进行元组化,并将其全部放入列表中;然后用count

>>> list 
[('Car', 'Cadillac','Blue'), ('Car', 'Aston Martin','Black'), ('Car', 'Cadillac', 'Blue'), ...] 
>>> list.count(('Car', 'Cadillac', 'Blue')) 
1 
+0

当它应该是'2'时给出结果'1'并不是非常有用... – vartec 2011-05-27 10:42:19

1
>>> from collections import Counter 
>>> Counter(['apple','red','apple','red','red','pear']) 
Counter({'red': 3, 'apple': 2, 'pear': 1}) 

Collections in docs.python.org可在Python 2.7

编辑:

列表的方式与Python兼容2.4

In [1]: cars = [('Car', 'Cadillac', 'Blue'), ('Car', 'Aston Martin', 'Black'), ('Car', 'Cadillac', 'Blue')] 

In [2]: cars.count(('Car', 'Cadillac', 'Blue')) 
Out[2]: 2 
+0

我被2.4卡住了! – GPX 2011-05-27 10:44:57

+0

Outch!那么其他人提供的列表方法可能是前进的方向...... – 2011-05-27 10:48:11

0

Python允许任何哈希的,不可变对象是词典中的键,所以你可以使用元组('Car', 'Cadillac', 'Blue')作为一个关键。你可以用collections.Counter

0

您可以使用Python Counter

>>> from collections import Counter 
>>> list = [('car','astin'),('car','cadillac'),('car','astin')] 
>>> Counter(list) 
Counter({('car', 'astin'): 2, ('car', 'cadillac'): 1})