Python:通过值将字典与元组进行排序

这个问题在这里已经有了答案:

  • 如何按价值对字典进行排序? 38个答案

  • 这给你想要的,排序。 但最终不在字典中,因为你无法对字典进行排序。

    d={('w1','u1'):3,('w1','u2'):8,('w2','u1'):1,('w1','u3'):11,('w2','u3'):6}
    
    d2 = {}
    
    for (w,u) , value in d.items():
        if w not in d2:
            d2[w] = [(u,value)]
        else:
            d2[w].append((u, value))
    
    
    for key, values in d2.items():
        print key, ":t", sorted(values, key=lambda x: -x[1]), "n"
    

    这使:

    w2 :    [('u3', 6), ('u1', 1)] 
    
    w1 :    [('u3', 11), ('u2', 8), ('u1', 3)] 
    

    鉴于你所追求的最终dict ,在我看来你不需要排序。 只需遍历键值对,然后将它们重新排列成一个新的字典:

    d = {('w1', 'u1'): 3, ('w1', 'u2'): 8, ('w2', 'u1'): 1, ('w1', 'u3'): 11,
         ('w2', 'u3'): 6}
    result = {}
    for (w, u), val in d.iteritems():
        result.setdefault(w, {})[u] = val
    print(result)
    

    产量

    {'w2': {'u1': 1, 'u3': 6}, 'w1': {'u1': 3, 'u3': 11, 'u2': 8}}
    
    链接地址: http://www.djcxy.com/p/18159.html

    上一篇: Python: sort dictionary with tuples as key by the value

    下一篇: sort list by frequency