print(metabuzz({'fizz': 3, 'buzz': 5}))
prints
def o(i):return str([None, 'fizz', 'buzz', 'fizzbuzz'][k(i)] or i)
def k(n):return sum([(n%v==0)<<i for i,v in enumerate([3, 5])])
print "\n".join(map(o, range(1, 101)))
and
exec(metabuzz({'fizz': 3, 'buzz': 5}))
prints
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzz
...
print(metabuzz(dict(fooz=3, barz=7, bazz=11, quxz=17)))
def o(i):return str([None, 'fooz', 'barz', 'foozbarz', 'bazz', 'foozbazz', 'barzbazz', 'foozbarzbazz', 'quxz', 'foozquxz', 'barzquxz', 'foozbarzquxz', 'bazzquxz', 'foozbazzquxz', 'barzbazzquxz', 'foozbarzbazzquxz'][k(i)] or i)
def k(n):return sum([(n%v==0)<<i for i,v in enumerate([3, 7, 11, 17])])
print "\n".join(map(o, range(1, 101)))