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 のコメントに従って、2 つの呼び出しdefaultdict
を回避するために使用することもできます。setdefault
この変更を行い、関連するアイテムのグループの望ましい表現を印刷するハックな方法を追加すると、
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
などとして出力します。