通过在python中对字典进行排序来提取键列表

时间:2019-02-09 20:03:55

标签: python dictionary

我将程序的输出作为python字典输出,并且希望从dictn中获得键列表:

s = "cool_ice_wifi"
r = ["water_is_cool", "cold_ice_drink", "cool_wifi_speed"]
good_list=s.split("_")
dictn={}
for i in range(len(r)):
    split_review=r[i].split("_")
    counter=0
    for  good_word in good_list:
        if good_word in split_review:
          counter=counter+1
          d1={i:counter}
          dictn.update(d1)

print(dictn)

我们应该获得密钥的条件:

  1. 具有相同值的键将复制其在虚拟列表中的索引。
  2. 在虚拟列表中具有最高值的键排在最前面,然后是最低

= {0:1,1:1,2:2:2}

预期输出 = [2,0,1]

2 个答案:

答案 0 :(得分:2)

您可以使用列表组合:

[key for key in sorted(dictn, key=dictn.get, reverse=True)]

答案 1 :(得分:1)

在Python3中,现在可以使用here所述的sorted方法,以您选择的任何方式对字典进行排序。
检出documentation,但在最简单的情况下,您可以.get字典的值,而对于更复杂的操作,则需要自己定义key函数。

Python3中的词典现在为insertion-ordered,所以另一种处理方法是在创建字典时进行排序,或者可以使用OrderedDict。

这是行动中第一个选项的示例,我认为这是最简单的

>>> a = {}
>>> a[0] = 1
>>> a[1] = 1
>>> a[2] = 2
>>> print(a)
{0: 1, 1: 1, 2: 2}
>>>
>>> [(k) for k in sorted(a, key=a.get, reverse=True)]
[2, 0, 1]