Python3中的排序字典



我正在为学校做作业。我的教授在课堂上给了我们一些代码,我不确定它的逻辑是如何工作的。

#wdcnt is dictionary with key = "some_string" and value = some_int
v = [wdcnt.values()]
v.sort()
for k in sorted(wdcnt, key = wdcnt.get, reverse = True):
print(k,wdcnt[k])
  1. 我理解将值存储到列表中然后对其排序的前提,但为什么在for循环中没有使用v。这行代码似乎毫无意义,因为v之后就再也不用了。

  2. wdcnt.get没有";((";或参数,但仍能返回与k相关联的键值。

请帮助我理解此代码片段背后的逻辑,谢谢。

注意*作业已经完成并且有效,但为了更好地理解,我想了解一下逻辑。

  1. v以后不使用,可以忽略它,它对循环确实没有用

  2. 参数wdcnt.get不带括号使用,因为它将函数作为参数传递(这在Python中是合法的(:

来自文档:

key指定一个参数的函数,该函数用于从iterable中的每个元素中提取比较键(例如,key=str.lower(。默认值为None(直接比较元素(。

  1. 我理解将值存储到列表中然后对其排序的前提,但为什么在for循环中没有使用v。这行代码似乎毫无意义,因为v之后就再也不用了

没错。正如赫尔伍德所说,v是未使用的,没有任何作用。

  1. wdcnt.get没有"((";或参数,但仍能返回与k相关联的键值

wdcnt.get是dictionary的.get方法。CCD_ 5是CCD_ 6的另一种说法。

详细信息:

  1. sorted对wdcnt的键进行迭代
  2. 对于每个密钥k,sorted调用其上指定的密钥比较器wdcnt.get
  3. CCD_ 10返回与k相关联的单词计数值。CCD_

前两行是不必要的。它不需要使用。sorted内置是一个函数,其中一个参数是key。关键参数决定了给排序函数的数组将如何排序。它只是赋予键的函数的名称。((未使用。

最新更新