字典中唯一值的累积计数

时间:2011-01-17 14:10:55

标签: python

我有一个庞大的字典dd {},我有他们喜欢的人和一套水果:

A set(['Apple', 'Orange', 'Strawberries'])
B set(['Banana', 'Strawberries', 'Orange', 'Kiwi', 'Dates'])
C set(['Apple', 'Kiwi', 'Grapes'])
A set(['Banana', 'Orange', 'Apple', 'Lemon'])

我想要水果的累积计数,这意味着第一个人,他喜欢的水果数量,第二个人,属于前一个人的水果数量加上他自己喜欢的水果数量没有' t存在于前一个人的集合中,依此类推。我希望得到这样的结果:

1 3
2 6
3 7
4 8

第一列中的递增数字是人,第二列是累积的水果数。我如何在Python中实现它? 谢谢,阿迪亚。

1 个答案:

答案 0 :(得分:3)

这样的东西?

allFruits = set()
for i,(k,v) in enumerate(sorted(dd.iteritems()), 1):
    allFruits.update(v)
    print i, len(allFruits)

这适用于Python 2.6及更高版本。对于旧版本,请尝试:

allFruits = set()
for i,(k,v) in enumerate(sorted(dd.iteritems())):
    allFruits.update(v)
    print i+1, len(allFruits)

输入:

dd = {'A': set(['Apple', 'Orange', 'Strawberries']),
      'B': set(['Banana', 'Dates', 'Kiwi', 'Orange', 'Strawberries']),
      'C': set(['Apple', 'Grapes', 'Kiwi']),
      'D': set(['Apple', 'Banana', 'Lemon', 'Orange'])}

输出:

1 3
2 6
3 7
4 8