Python: sorting a dictionary of lists

前端 未结 4 777
囚心锁ツ
囚心锁ツ 2020-12-02 08:42

Still learning python (finally!) and can\'t quite wrap my head around this one yet. What I want to do is sort a dictionary of lists by value using the third item in the lis

4条回答
  •  旧时难觅i
    2020-12-02 09:13

    You stated two quite different wants:

    1. "What I want to do is sort a dictionary of lists ..."
    2. "I want to be able to iterate through the dictionary in order of ..."

    The first of those is by definition impossible -- to sort something implies a rearrangement in some order. Python dictionaries are inherently unordered. The second would be vaguely possible but extremely unlikely to be implemented.

    What you can do is

    1. Take a copy of the dictionary contents (which will be quite unordered)
    2. Sort that
    3. Iterate over the sorted results -- and you already have two solutions for that. By the way, the solution that uses "key" instead of "cmp" is better; see sorted

    "the third item in the list" smells like "the third item in a tuple" to me, and "e[1][2]" just smells :-) ... you may like to investigate using named tuples instead of lists; see named tuple factory

    If you are going to be doing extract/sort/process often on large data sets, you might like to consider something like this, using the Python-supplied sqlite3 module:

    create table ex_dict (k text primary key, v0 int, v1 int, v2 int);
    insert into ex_dict values('item1', 7, 1, 9);
    -- etc etc 
    select * from ex_dict order by v2;
    

提交回复
热议问题