I have the transFn function as follows: def transFn(translatefile): transfile = open(translatefile, 'r') records = transfile.read() transfile.close() lines = records.split() transDict = {} for line in lines: key, value = line.split(',') transDict[key] = value
for key, value in data.items(): data[key] = [ x for x in (transDict.get(i, i) for i in value) if x is not None] my original data is: data = {'1': ['a', 'b', 'c'], '3': ['a', 'b', 'c'], '2': ['a', 'b', 'c'], '4': ['a', 'c']} my transDict is: transDict = {'a': '1', 'b': '2'} However when I run transFn my data is: data = {'1': ['1', '2', 'c'], '3': ['1', '2', 'c'], '2': ['1', '2', 'c'], '4': ['1', 'c']} I was expecting: {'1': ['1', '2'], '3': ['1', '2'], '2': ['1', '2'], '4': ['1']} I will see if I can work with a remove command?? M. On 10/2/07, Kent Johnson <[EMAIL PROTECTED]> wrote: > > GTXY20 wrote: > > Here's an interesting question: > > > > Can I use the transFn function to remove items in the value list. > > > > Can this be done by simple assigning the current value a value of null > > in the translate file? > > No, that will make the translated value be None (I guess that is what > you mean by null). You could then filter for these, for example > > for key, value in Data.items(): > Data[key] = [ transDict.get(i, i) for i in value if > transDict.get(i, i) is not None] > > If you want to avoid double-fetching from transDict (if Data is huge > this might matter) then you could write out the loop or possibly use > something like > Data[key] = [ x for x in (transDict.get(i, i) for i in value) if x is > not None] > > which makes an intermediate generator and filters that. > > Kent > > > > > M. > > > > > > > > On 10/2/07, GTXY20 <[EMAIL PROTECTED]> wrote: > >> I adjusted so that I get the following so if I do not need to translate > a > >> dictionary I do not call the function transFn: > >> > >> def transFn(translatefile): > >> transfile = open(translatefile, 'r') > >> records = transfile.read() > >> transfile.close() > >> lines = records.split() > >> transDict = {} > >> for line in lines: > >> key, value = line.split(',') > >> transDict[key] = value > >> > >> for key, value in Data.items(): > >> Data[key] = [ transDict.get(i, i) for i in value ] > >
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor