Maurice wrote: > Hello, hope everything is okay. I think someone might have dealt with a > similar issue I'm having. > > Basically I wanna do the following: > > I have a list such [6,19,19,21,21,21] (FYI this is the item of a certain > key in the dictionary) > > And I need to convert it to a list of 32 elements (meaning days of the > month however first element ie index 0 or day zero has no meaning - > keeping like that for simplicity's sake). Therefore the resulting list > should be: > [0,0,0,0,0,0,1,0,0,0...,2,0,3,0...0] > > So the list index should tell how many occurrences of a certain day in the > original list. > > My attempt: > > weirdList = [[0]*32]*len(dict_days) #list's length should be how many keys > in the dict.
Rewrite the above as inner = [0] * 32 weirdList = [inner] * len(dict_days) Now it should be clearer that weirdList is [inner, inner, inner, ...] i. e. len(dict_days) times the same list of 32 zeros. When you modify weirdList[0] you also modify weirdList[1] etc. because these are the actually the same list. For the inner list this is not a problem because 0 is immutable, so you can only replace it. If the inner list contained a mutable object you'd see the same "weird" behaviour you see for the outer list. The fix is to use multiple inner lists: not_so_weirdList = [[0]*32 for _ in range(len(dict_days))] > counter = 0 > k = 0 > for key in dict_days.keys(): > for i in range(1,32): > if i in dict_days[key]: > counter = dict_days[key].count(i) > weirdList[k][i] = counter > dict_days[key] = weirdList[k] > k+=1 > > However it does not work. weirdList seems to be always the same? Instead of the list you could use a counter and get basically the same interface as long as you ensure that the second index satisfies 0<=index<32: import collections for key, values in dict_days.items(): dict_days[key] = collections.Counter(values) -- https://mail.python.org/mailman/listinfo/python-list