def print_related(xs):
d = {}
for (a, b) in xs:
d.setdefault(a, set()).add(b)
d.setdefault(b, set()).add(a)
for k in d:
print "Items related to %s:" % k
print " " + repr(d[k])
这会将样本输入打印为
Items related to 1:
set([2, 3, 4, 5])
Items related to 2:
set([1, 3, 4])
Items related to 3:
set([1, 2])
Items related to 4:
set([1, 2])
Items related to 5:
set([1])
您可以使用自己的函数来代替repr以不同方式打印集合,如果您关心重复等,请使用不同的数据结构。
根据下面 raymonad 的评论,您也可以使用defaultdict来避免这两个setdefault调用。进行此更改并添加一种 hacky 方式来打印相关项目组的所需表示会导致
import collections
def print_related(xs):
d = collections.defaultdict(set)
for (a, b) in xs:
d[a].add(b)
d[b].add(a)
for k in d:
print "Items related to %s:" % k
print " " + repr(d[k])[5:-2]
哪个打印组2, 3, 4, 5等。