Skip to content

Instantly share code, notes, and snippets.

@jdp
Forked from isa/gist:2571012
Last active February 9, 2016 19:22
Show Gist options
  • Save jdp/2572282 to your computer and use it in GitHub Desktop.
Save jdp/2572282 to your computer and use it in GitHub Desktop.
Convert in less than 30 lines
Question: Convert following into the latter data structure in less than 30 lines:
List:
A, B, C
A, C, E
E, F, D
D, A, J
E, D, J
List
A, B, 1 (frequency)
A, C, 2
A, D, 1
A, E, 1
A, J, 1
B, C, 1
C, E, 1
D, E, 2
D, F, 1
D, J, 2
E, F, 1
E, J, 1
from collections import Counter
from itertools import chain, combinations
lines = [['A', 'B', 'C'], ['A', 'C', 'E'], ['E', 'F', 'D'], ['D', 'A', 'J'], ['E', 'D', 'J']]
freqs = Counter(tuple(sorted(t)) for t in chain.from_iterable(combinations(l, 2) for l in lines))
result = [(k1, k2, f) for (k1, k2), f in sorted(freqs.items())]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment