How to reverse a dictionary that has repeated values

后端 未结 6 1827
抹茶落季
抹茶落季 2020-11-28 14:48

I have a dictionary with almost 100,000 (key, value) pairs and the majority of the keys map to the same values. For example:

mydict =  {\'a\': 1, \'c\': 2, \'         


        
6条回答
  •  没有蜡笔的小新
    2020-11-28 15:14

    Using itertools.groupby:

    from operator import itemgetter
    from itertools import groupby
    
    snd = itemgetter(1)
    
    def sort_and_group(itr, f):
        return groupby(sorted(itr, key=f), f)
    
    mydict =  {'a': 1, 'c': 2, 'b': 1, 'e': 2, 'd': 3, 'h': 1, 'j': 3}
    reversed_dict = {number: [char for char,_ in v] 
                     for number, v in sort_and_group(mydict.items(), snd)}
    

提交回复
热议问题