字典中唯一值的累计计数
我有一个很大的字典 dd{},里面记录了每个人和他们喜欢的水果集合:
A set(['Apple', 'Orange', 'Strawberries'])
B set(['Banana', 'Strawberries', 'Orange', 'Kiwi', 'Dates'])
C set(['Apple', 'Kiwi', 'Grapes'])
A set(['Banana', 'Orange', 'Apple', 'Lemon'])
我想要一个水果的累计计数,也就是说,对于第一个人,他喜欢的水果数量就是他的计数;对于第二个人,计数要加上第一个人喜欢的水果数量,再加上第二个人自己喜欢的、在第一个人喜欢的水果中没有的水果,以此类推。我想要的结果是这样的:
1 3
2 6
3 7
4 8
第一列是人的编号,第二列是水果的累计数量。我该如何在 Python 中实现这个呢?谢谢,Adia。
1 个回答
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