1

我正在寻找对字典进行排序的方法,并在SO 线程上遇到了这段代码:

import operator
x = {1: 2, 3: 4, 4:3, 2:1, 0:0}
sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1))

这段代码是如何工作的?当我通过字典调用 iteritems() 时,我得到了这个:

<dictionary-itemiterator object at 0xf09f18>

我知道这是一个参考,但你如何使用它?和 afaik,在 sorted(a,b) 中,应该是你想要排序的东西,而 b 将是排序的指标吗?itemgetter(1) 在这里如何工作?

4

3 回答 3

0

operator.itemgetter(1)相当于lambda x: x[1]。这是一种指定函数的有效方法,该函数返回1其输入索引处的值。

.iteritems()(key,value)是字典的一种方法,它以元组形式返回字典中条目的迭代器。

于 2012-10-09T02:35:04.937 回答
0
  • iteritems()就像items(),除了它返回一个迭代器而不是一个列表。对于大型字典,这可以节省内存,因为您可以遍历每个单独的元素,而无需先在内存中建立完整的项目列表。
  • sorted接受一个关键字参数key,该参数是一个函数,用于确定排序时要比较的内容。在这种情况下,它是 using operator.itemgetter,这就像 do 的函数版本something[1]。因此,代码对[1]返回的元组的项进行排序items(),这是存储在字典中的值。
于 2012-10-09T02:36:04.317 回答
0

大多数处理列表或类似列表的对象的 python 内置函数也接受迭代器,这些就像指向列表的指针,您可以使用 next() 成员函数前进到列表中的下一项。这对于无限列表或非常大的列表(许多元素或非常大的元素)非常方便,可以降低内存使用量。请参阅http://docs.python.org/library/stdtypes.html#iterator-types

iteritems() 为字典中的项目列表提供了一个迭代器。

于 2012-10-09T02:46:00.313 回答