Il giorno domenica 18 ottobre 2015 13:00:44 UTC+2, Peter Otten ha scritto: > Beppe wrote: > > > hi to everybody, I must turn a tuple of lists into a dictionary. > > > > something like > > > > (['a', 'b', 'c', 'd', 'e', 'f'], ['g', 'h', 'i'], ['l', 'm', 'n', 'o']) > > > > note that the length af each list is variable > > > > must return > > > > a ['b', 'c', 'd', 'e', 'f'] > > b ['a', 'c', 'd', 'e', 'f'] > > c ['a', 'b', 'd', 'e', 'f'] > > d ['a', 'b', 'c', 'e', 'f'] > > e ['a', 'b', 'c', 'd', 'f'] > > f ['a', 'b', 'c', 'd', 'e'] > > g ['h', 'i'] > > h ['g', 'i'] > > i ['g', 'h'] > > l ['m', 'n', 'o'] > > m ['l', 'n', 'o'] > > n ['l', 'm', 'o'] > > o ['l', 'm', 'n'] > > What do you want to do with items that occur in more than one list? > > If there are no such duplicate items it's easy: > > >>> lists = (['a', 'b', 'c', 'd', 'e', 'f'], ['g', 'h', 'i'], ['l', 'm', > 'n', 'o']) > >>> d = { > ... c: items[:i] + items[i+1:] > ... for items in lists > ... for i, c in enumerate(items) > ... } > >>> pprint.pprint(d) > {'a': ['b', 'c', 'd', 'e', 'f'], > 'b': ['a', 'c', 'd', 'e', 'f'], > 'c': ['a', 'b', 'd', 'e', 'f'], > 'd': ['a', 'b', 'c', 'e', 'f'], > 'e': ['a', 'b', 'c', 'd', 'f'], > 'f': ['a', 'b', 'c', 'd', 'e'], > 'g': ['h', 'i'], > 'h': ['g', 'i'], > 'i': ['g', 'h'], > 'l': ['m', 'n', 'o'], > 'm': ['l', 'n', 'o'], > 'n': ['l', 'm', 'o'], > 'o': ['l', 'm', 'n']}
hi Peter, you are right, no duplicates are admitted between lists, anyway your solution,works on python 3 but not on 2. however beautiful list comprehension solution. I will try to suit it for the python version i need regards beppe -- https://mail.python.org/mailman/listinfo/python-list