1. def dfilter(f,d): kys = d.keys() dout = {} for ky in kys: if f(ky,d[ky]): dout[ky] = d[ky] return dout dc = {'abc':5,'de':12,'f':13} print dfilter(lambda k,dk: dk > 5,dc) # {'de': 12, 'f': 13} print dfilter(lambda k,dk: dk > 5 and 'e' in k,dc) # {'de': 12} 2. def od(fileName): f = open(fileName,'rb') bytes = f.read() z = zip(range(len(bytes)),bytes) nonAscii = filter(lambda zi: ord(zi[1]) > 127,z) return nonAscii # test case s = 'abc\n' + 'de' + chr(200) + 'f\n' g = open('test','wb') g.write(s) g.close() print od('test')