我有一个庞大的字典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中实现它? 谢谢,阿迪亚。
答案 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