python dictionary values sorting

后端 未结 4 2013
没有蜡笔的小新
没有蜡笔的小新 2020-12-16 21:31

I have 2 dictionaries, dict1 and dict2 which contain the same keys, but different values for the keys. What I want to do is for each dictionary, s

4条回答
  •  醉酒成梦
    2020-12-16 21:49

    You may be interested in collections.OrderedDict

    Here's a sample, my initial thougth is you were also looking for dictionaries with keys ordered by values, things that od1 and od2 are.

    d1 = {"a":0.6, "b":0.3, "c":0.9, "d":1.2, "e":0.2}
    d2 = {"a":1.4, "b":7.7, "c":9.0, "d":2.5, "e":2.0}
    
    od1 = OrderedDict(sorted(d1.items(), key=lambda t: t[1]))
    od2 = OrderedDict(sorted(d2.items(), key=lambda t: t[1]))
    
    k1 = od1.keys()
    k2 = od2.keys()
    
    diff = dict((k, n - k2.index(k)) for n, k in enumerate(k1))
    

    If you don't need them then Sven solution is probably faster.

    edit: not that faster honestly... (sven.py is his second, more efficient version):

    $ cat /tmp/mine.py | time python -m timeit
    10000000 loops, best of 3: 0.0842 usec per loop
    real    0m 3.69s
    user    0m 3.38s
    sys 0m 0.03s
    $ cat /tmp/sven.py | time python -m timeit
    10000000 loops, best of 3: 0.085 usec per loop
    real    0m 3.86s
    user    0m 3.42s
    sys 0m 0.03s
    

    If someone wants to post formatted bigger dicts I'll test them too.

提交回复
热议问题