Ben Vinger wrote: > Hello > > I want to create a dictionary (from SQL usernames) of > the format: > accounts = { > ('psmit', '123456'): 'psmit', > ('rmatt', 'mypass'): 'rmatt', > } > > So I have: > accounts = {} > UserCursor.execute(sqlstr) > rows = UserCursor.fetchall() > UserConn.commit() > for row in rows: > U = row['User'] > P = row['Password'] > InnerDict = {} > InnerDict[U] = P > accounts[InnerDict] = U > > But I get: > TypeError: dict objects are unhashable > Unfortunately, I just can't see what I'm doing wrong
You are trying to use a dictionary as the key to your dictionary. This doesn't work - dicts can't be used as dict keys, which is what the error message is trying to tell you. Instead of accounts = { ('psmit', '123456'): 'psmit', ('rmatt', 'mypass'): 'rmatt', } your code tries to make accounts = { {'psmit': '123456'}: 'psmit', {'rmatt': 'mypass'}: 'rmatt', } try this accounts[U, P] = U though I'm not sure why you use a dict instead of a set here, since the value is contained in the key. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor