File: graph.py

package info (click to toggle)
toolz 1.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 672 kB
  • sloc: python: 5,573; makefile: 136; sh: 2
file content (31 lines) | stat: -rw-r--r-- 771 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from toolz.curried import *
a, b, c, d, e, f, g = 'abcdefg'

edges = [(a, b), (b, a), (a, c), (a, d), (d, a), (d, e), (e, f), (d, f),
         (f, d), (d, g), (e, g)]


out_degrees = countby(first,  edges)
# {'a': 3, 'b': 1, 'd': 4, 'e': 2, 'f': 1}

in_degrees = countby(second, edges)
# {'a': 2, 'b': 1, 'c': 1, 'd': 2, 'e': 1, 'f': 2, 'g': 2}


out_neighbors = valmap(comp(tuple, map(second)),
                       groupby(first, edges))
# {'a': ('b', 'c', 'd'),
#  'b': ('a',),
#  'd': ('a', 'e', 'f', 'g'),
#  'e': ('f', 'g'),
#  'f': ('d',)}

in_neighbors = valmap(comp(tuple, map(first)),
                      groupby(second, edges))
# {'a': ('b', 'd'),
#  'b': ('a',),
#  'c': ('a',),
#  'd': ('a', 'f'),
#  'e': ('d',),
#  'f': ('e', 'd'),
#  'g': ('d', 'e')}