Thanks for the help. Actually this is part of a much larger project, but I have unfortunately pigeon-holed myself into needing to do these things without a whole lot of flexibility.
To give a specific example I have the following dictionary where I need to remove values that are duplicated with other values and remove values that are duplicates of the keys, but still retain it as a dictionary. Each value is itself a class with many attributes that I need to call later on in the program, but I cannot have duplicates because it would mess up some estimation part of my model. d = {36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 22, 11, 31], 22: [21, 23, 12, 32], 26: [25, 27, 16, 36], 30: [20, 31, 40]} So I want a new dictionary that would get rid of the duplicate values of 21, 22, 36 and 20 and give me back a dictionary that looked like this: new_d= {36: [35, 37, 26, 46], 75: [74, 76, 65, 85], 21: [20, 11, 31], 22: [23, 12, 32], 26: [25, 27, 16], 30: [40]} I understand that a dictionary may not be the best approach, but like I said I have sort of pigeon-holed myself by the way that I am simulating my data and the estimation model that I am using. Any suggestions or comments about the above problem would be greatly appreciated. Thanks again, Krishna >>> Dave Angel <da...@ieee.org> 08/11/09 7:38 AM >>> Krishna Pacifici wrote: > Hi, > kind of a newbie here, but I have two questions that are probably pretty > simple. > > 1. I need to get rid of duplicate values that are associated with different > keys in a dictionary. For example I have the following code. > s={} > s[0]=[10,2,3] > s[10]=[22,23,24] > s[20]=[45,5] > s[30]=[2,4] > s[40]=[6,7,8] > > Now I want to be able to loop through the primary keys and get rid of > duplicates (both in keys and values) so that I would have either a new > dictionary or the same dictionary but with the following values: > > s[0]=[3] > s[10]=[22,23,24] > s[20]=[45,5] > s[30]=[2,4] > s[40]=[6,7,8] > > It doesn't matter which value gets removed as long as there is only one > remaining, so in this example it doesn't matter that 2 got removed from s[0] > or from s[30] as long as there is only one 2 in the dictionary. > > 2. I need to be able to loop over the values in the dictionary when there > are multiple values assigned to each key like above and assign new values to > those values. Taking the above example I would want to assign a new value so > that when you called s[0] it would equal [3,4] say if 4 was the new value. I > think this should be as simple as adding a value, but I kept on having > difficulty. > > Any suggestions would be greatly appreciated. > > Thank you very much, > Krishna > > > Sounds like homework. If it was for an unconstrained project, I'd design a different data structure, one that directly enforced the data constraints. So far, I can't imagine a useful reason for this particular set of constraints. Let's break the problems down. 1a) Do you know how to write a loop that visits all the keys of a dictionary? 1b) Do you know how to safely check if a particular key exists? e.g. if key in s: 1c) Do you know how to collect a set of values, so that when a duplicate is found, it can be recognized as such? 1d) Do you know how to remove an item from a list? 2a) Like 1a) 2b) Do you know how to append a value to the end of a list? Is s[key] a list? DaveA
-- http://mail.python.org/mailman/listinfo/python-list