当前位置: 首页 > 面试题库 >

在Python中,如何按已排序的键顺序遍历字典?

穆鸿卓
2023-03-14
问题内容

有一个现有的函数以下面的结尾,其中d是一个字典:

return d.iteritems()

返回给定字典的未排序迭代器。我想返回一个遍历按 key 排序的项目的迭代器。我怎么做?


问题答案:

尚未对此进行广泛的测试,但是可以在Python 2.5.2中使用。

>>> d = {"x":2, "h":15, "a":2222}
>>> it = iter(sorted(d.iteritems()))
>>> it.next()
('a', 2222)
>>> it.next()
('h', 15)
>>> it.next()
('x', 2)
>>>

如果您习惯于使用for key, value in d.iteritems(): ...迭代器代替迭代器,那么上面的解决方案仍然可以使用

>>> d = {"x":2, "h":15, "a":2222}
>>> for key, value in sorted(d.iteritems()):
>>>     print(key, value)
('a', 2222)
('h', 15)
('x', 2)
>>>

在Python 3.x中,使用d.items()代替d.iteritems()返回迭代器。



 类似资料:
  • 问题内容: 请看下面我的地图 我正在按钥匙的大小顺序遍历此地图 但是,这打印出来 有没有一种方法可以按键的大小顺序打印出来,所以,我想像这样遍历这张地图 等等… 非常感谢您的帮助! 问题答案: 收集所有键,对它们进行排序,然后按键迭代地图,如下所示:

  • 问题内容: 这将是一个很好的方式,从去到 我检查了一些帖子,但它们都使用了返回元组的”sorted” 运算符。 问题答案: 标准Python字典是无序的。即使你对(key,value)对进行了排序,也无法以保留顺序的方式存储它们。 最简单的方法是使用OrderedDict,它可以记住元素插入的顺序: 没关系od打印方式;它会按预期工作: Python 3 对于Python 3用户,需要使用.ite

  • 问题内容: 简而言之:无论地图的类型如何,如何按已排序的键顺序遍历地图? 我发现了一些相关的问题,最接近的问题表明,如果不依靠模块,就不可能做到这一点。这种理解正确吗? 考虑下面的Go代码,该代码以其键的排序顺序遍历两个不同类型的映射: 对于两种不同的地图类型,提取键然后对其进行排序的逻辑是重复的。 有什么方法可以排除这种逻辑并避免重复吗? 我在尝试编写提供方法的接口时遇到了麻烦。特别是,of的返

  • 二叉树的预序遍历是{8,5,9,7,1,12,4,11,3},其顺序是{9,5,1,7,12,8,4,3,11}。用它构造二叉树并执行级别顺序遍历。最后构造一个二叉搜索树(BST),从左到右依次获取在上述级别顺序遍历中出现的键值。这个BST的级别顺序遍历是什么?

  • 问题内容: 有没有一种简单的方法可以在Python中按字母顺序对字符串中的字母进行排序? 因此对于: 我想返回: 问题答案: 你可以做: