Swap keys for unique values in a dictionary in Python

后端 未结 4 1248
野趣味
野趣味 2021-01-28 05:51
a = {0: \'PtpMotion\', 1: \'PtpMotion\', 2: \'LinMotion\', 3: \'LinMotion\', 4: \'LinMotion\', 5: \'LinMotion\', 6: \'LinMotion\', 7: \'LinMotion\', 8: \'LinMotion\', 9:         


        
4条回答
  •  萌比男神i
    2021-01-28 06:07

    When you say

    b[val] = key
    

    and val already exists,it overrides the setting, getting what you see. To get all values, you must map the original values to lists of keys, such as

    from collections import defaultdict
    
    b = defaultdict(list)
    for key, val in a.items():
        b[val].append(key)
    print b
    

    When I do it (python 2.5.1), I get

    defaultdict(, {'LinMotion': [2, 3, 4, 5, 6, 7, 8, 10], 
                                'PtpMotion': [0, 1, 9], 
                                'Wait': [11]})
    

提交回复
热议问题