On Sun, 18 Oct 2015 03:17:18 -0700, Beppe wrote: > hi to everybody, I must turn a tuple of lists into a dictionary.
I went down a different path to Peter, and discovered something perplexing: This failed: d = { i: deepcopy(l).remove(i) for l in t for i in l } So I tried to expand it out to see where the issue was, and ended up with two variants: def f1(l, i): m = deepcopy(l) m.remove(i) return m d = { i: f1(l,i) for l in t for i in l } def f2(l, i): m = deepcopy(l).remove(i) return m d = { i: f2(l,i) for l in t for i in l } The first variant using, m = deepcopy(l); m.remove(i) works fine, generating: {'a': ['b', 'c', 'd', 'e', 'f'], 'c': ['a', 'b', 'd', 'e', 'f'], 'b': ['a', 'c', 'd', 'e', 'f'], 'e': ['a', 'b', 'c', 'd', 'f'], 'd': ['a', 'b', 'c', 'e', 'f'], 'g': ['h', 'i'], 'f': ['a', 'b', 'c', 'd', 'e'], 'i': ['g', 'h'], 'h': ['g', 'i'], 'm': ['l', 'n', 'o'], 'l': ['m', 'n', 'o'], 'o': ['l', 'm', 'n'], 'n': ['l', 'm', 'o']} The second variant using, m = deepcopy(l).remove(i) fails thus: {'a': None, 'c': None, 'b': None, 'e': None, 'd': None, 'g': None, 'f': None, 'i': None, 'h': None, 'm': None, 'l': None, 'o': None, 'n': None} I'm not sure I understand why after m = deepcopy(l); m.remove(i); m is a different value to that which it as after m = deepcopy(l).remove(i). -- Denis McMahon, denismfmcma...@gmail.com -- https://mail.python.org/mailman/listinfo/python-list