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

字典中的键顺序

汝飞
2023-03-14
问题内容

我有一本字典

{'a': 'first', 'b': 'second'}

但是,我需要字典的顺序不同:

{'b': 'second', 'a': 'first'}

做这个的最好方式是什么?


问题答案:

字典 没有顺序 。因此,没有办法做到这一点。

如果您使用的是python2.7
+,则可以使用collections.OrderedDict-在这种情况下,您可以使用检索项目列表.items(),然后将其反向并OrderedDict从反向列表中创建一个新项:

>>> od = OrderedDict((('a', 'first'), ('b', 'second')))
>>> od
OrderedDict([('a', 'first'), ('b', 'second')])
>>> items = od.items()  # list(od.items()) in Python3
>>> items.reverse()
>>> OrderedDict(items)
OrderedDict([('b', 'second'), ('a', 'first')])

如果您使用的是旧版python,则可以从http://code.activestate.com/recipes/576693/获得反向移植



 类似资料:
  • 问题内容: 码: 打印。我不确定该方法如何确定l中关键字的顺序。但是,我希望能够以“适当”的顺序检索关键字。当然,正确的顺序将创建列表。 和这个: 问题答案: 你可以使用OrderedDict(需要Python 2.7)或更高版本。 另外,请注意,由于dict你使用进行创建的操作已经忘记了元素的顺序,因此该操作无效。相反,你想使用。 如文档中所述,对于低于python 2.7的版本,你可以使用此配

  • 问题内容: 我正在寻找一个有序的关联数组,即有序的字典的可靠实现。我想要按键而不是插入顺序排序。 更准确地说,我正在寻找一种int-to-float(或另一种用例是string-to-float)映射结构的节省空间的实现,该结构的结构是: 有序迭代为O(n) 随机访问为O(1) 我想到的最好的方法是将字典和键列表粘合在一起,使最后一个键按等分和插入顺序排列。 还有更好的主意吗? 问题答案: “随机

  • 问题内容: D = {‘a’: 1, ‘b’: 2, ‘c’: 3} >>> D 我只是在Python shell中进行了此操作,我想知道为什么键“ c”会在键“ b”之后??? 问题答案: 顺序与它们内部的工作方式以及它们在哈希表中的顺序有关。这又取决于键的哈希值,键的插入顺序以及所使用的Python实现。 该顺序是任意的(但不是随机的),知道它将是哪个顺序将永远不会有用。 要获取排序的键列表,

  • 问题内容: 这是我的Django代码,无法正常运行: 有没有办法保持原始元素的顺序,所以帖子将按in排序? 谢谢! 编辑: Python 2.6,Django 1.3 问题答案: 使用SortedDict代替dict() SortedDict保持其属性中的顺序。因此,您可以根据需要操纵顺序而无需重建字典。例如,要反转SortedDict的顺序,只需使用

  • 问题内容: 我在目标C中使用JSON-FRAMEWORK来解析JSON对象。当我调用[jsonString JSONValue]时,我得到了一个字典,但是键的顺序与我解析的JSON对象的顺序不同。无论如何,要保持此顺序不变? 问题答案: 根据定义 ,在JSON对象中,键值对的顺序没有意义。该规范允许JSON生产者以其想要的任何方式对它们进行置换,甚至是随机的- 并且不需要解析器来保留顺序。RFC

  • 问题内容: 有一个现有的函数以下面的结尾,其中是一个字典: 返回给定字典的未排序迭代器。我想返回一个遍历按 key 排序的项目的迭代器。我怎么做? 问题答案: 尚未对此进行广泛的测试,但是可以在Python 2.5.2中使用。 如果您习惯于使用迭代器代替迭代器,那么上面的解决方案仍然可以使用 在Python 3.x中,使用代替返回迭代器。