我正在为学校做作业。我的教授在课堂上给了我们一些代码,我不确定它的逻辑是如何工作的。
#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])
我理解将值存储到列表中然后对其排序的前提,但为什么在for循环中没有使用v。这行代码似乎毫无意义,因为v之后就再也不用了。
wdcnt.get没有";((";或参数,但仍能返回与k相关联的键值。
请帮助我理解此代码片段背后的逻辑,谢谢。
注意*作业已经完成并且有效,但为了更好地理解,我想了解一下逻辑。
-
v
以后不使用,可以忽略它,它对循环确实没有用 -
参数
wdcnt.get
不带括号使用,因为它将函数作为参数传递(这在Python中是合法的(:
来自文档:
key指定一个参数的函数,该函数用于从iterable中的每个元素中提取比较键(例如,key=str.lower(。默认值为None(直接比较元素(。
- 我理解将值存储到列表中然后对其排序的前提,但为什么在for循环中没有使用v。这行代码似乎毫无意义,因为v之后就再也不用了
没错。正如赫尔伍德所说,v
是未使用的,没有任何作用。
- wdcnt.get没有"((";或参数,但仍能返回与k相关联的键值
wdcnt.get
是dictionary的.get方法。CCD_ 5是CCD_ 6的另一种说法。
详细信息:
sorted
对wdcnt的键进行迭代- 对于每个密钥k,
sorted
调用其上指定的密钥比较器wdcnt.get
- CCD_ 10返回与k相关联的单词计数值。CCD_
前两行是不必要的。它不需要使用。sorted内置是一个函数,其中一个参数是key。关键参数决定了给排序函数的数组将如何排序。它只是赋予键的函数的名称。((未使用。