Swap keys for unique values in a dictionary in Python

后端 未结 4 1208
野趣味
野趣味 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条回答
  •  故里飘歌
    2021-01-28 06:12

    Each key can only occur once in a dictionary. You could store a list of indices for each key:

    import collections
    b = collections.defaultdict(list)
    for key, val in a.iteritems():
        b[val].append(key)
    print b
    # {'LinMotion': [2, 3, 4, 5, 6, 7, 8, 10], 'PtpMotion': [0, 1, 9], 'Wait': [11]}
    

    Edit: As pointed out by ecik in the comments, you could also use a defaultdict(set) (and use .add() instead of .append() in the loop).

提交回复
热议问题