擅长:python、mysql、java
<pre><code>events = """\
1-hammer
1-screwdriver
1-nails
2-hammer
2-nails
3-screws
3-screwdriver
4-nails
4-screws""".splitlines()
events = sorted(map(str.strip,e.split('-')) for e in events)
from collections import defaultdict
from itertools import groupby
# tally each occurrence of each pair of items
summary = defaultdict(int)
for val,items in groupby(events, key=lambda x:x[0]):
items = sorted(it[1] for it in items)
for i,item1 in enumerate(items):
for item2 in items[i+1:]:
summary[(item1,item2)] += 1
summary[(item2,item1)] += 1
# now convert raw pair counts into friendlier lookup table
pairmap = defaultdict(dict)
for k,v in summary.items():
item1, item2 = k
pairmap[item1][item2] = v
# print the results
for k,v in sorted(pairmap.items()):
print k,':',v
</code></pre>
<p>给出:</p>
^{pr2}$
<p>(这将按购买事件处理您的初始请求分组项目。要按用户分组,只需将事件列表的第一个键从event number更改为user id。)</p>