Tricky Dictionary Question from newbie

Reinhold Birkenfeld reinhold-birkenfeld-nospam at wolke7.net
Mon Jul 11 14:50:59 EDT 2005


Mark Jackson wrote:
> "Ric Da Force" <ric at next-level.com.au> writes:
> 
>> It is hard to explain but this is what I mean:
>> 
>> Dict = {'rt': 'This is repeated', 'sr': 'This is repeated', 'gf': 'This is 
>> not'}
>> 
>> I want this to return a new dict with string keys and lists containing the 
>> previous keys for repeated values.
>> 
>> NewDict = {'This is repeated':['rt','sr'],'This is not':['gf']}
> 
> NewDict = {}
> for x in Dict.keys():
> 	try:
> 		NewDict[Dict[x]].append(x)
> 	except KeyError:
> 		NewDict[Dict[x]] = [x]

Or, more up-to-date:

NewDict = {}
for key, val in Dict.iteritems():
    NewDict.setdefault(val, []).append(key)

Reinhold



More information about the Python-list mailing list