[英]Sorting dictionary in 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])
我理解将值存储到列表中然后对它们进行排序的前提,但是为什么在 for 循环中没有使用 v 。 这行代码似乎毫无意义,因为 v 之后再也没有使用过。
wdcnt.get 没有“()”或参数,但仍然可以返回与 k 关联的键值。
请帮助我理解这段代码片段背后的逻辑,谢谢。
注意* 作业已完成并有效,但为了更好地理解我想了解逻辑。
v
后面没用,可以无视,对循环确实没用
使用参数wdcnt.get
不带括号,因为它将函数作为参数传递(这在 Python 中是合法的):
从文档:
key 指定一个带一个参数的函数,用于从 iterable 中的每个元素中提取比较键(例如,key=str.lower)。 默认值为 None (直接比较元素)。
- 我理解将值存储到列表中然后对它们进行排序的前提,但是为什么在 for 循环中没有使用 v 。 这行代码似乎毫无意义,因为 v 之后再也没有使用过。
这是正确的。 就像 khelwood 所说的那样, v
未使用且无效。
- wdcnt.get 没有“()”或参数,但仍然可以返回与 k 关联的键值。
wdcnt.get
是字典的 .get 方法。 wdcnt.get(k)
是wdcnt[k]
另一种说法。
详细:
sorted
迭代 wdcnt 的键。sorted
调用指定的键比较器wdcnt.get
就可以了。wdcnt.get(k)
返回与 k 关联的字数值。 sorted
然后使用这些值来确定如何对键进行排序。前两行是不必要的。 它不需要使用。 sorted 内置函数是一个函数,它的一个参数是关键。 key 参数决定了给定排序函数的数组将如何排序。 它只是提供给键的函数名称。 () 未使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.