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

Python:字典中的元素顺序

赏航
2023-03-14
问题内容

这是我的Django代码,无法正常运行:

posts = Post.objects.all().order_by('-added')[:20] # ordered by 'added'
post_list = dict([(obj.id, obj) for obj in posts])

# ... some operations with dictionary elements go here ...

posts_to_return = [post for post_id, post in post_list.items()] # order by 'id' now!

有没有办法保持原始元素的顺序,所以帖子将按addedin排序posts_to_return

谢谢!

编辑: Python 2.6,Django 1.3


问题答案:

使用SortedDict代替dict(from django.utils.datastructures import SortedDict

SortedDict保持其keyOrder属性中的顺序。因此,您可以根据需要操纵顺序而无需重建字典。例如,要反转SortedDict的顺序,只需使用keyOrder.reverse()

post_list = SortedDict([(obj.id, obj) for obj in posts])
# reversing the post order in-place
post_list.keyOrder.reverse()


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

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

  • 问题内容: 我不了解Python从保持集中应用的顺序。例如: 的顺序是。为什么“ A”在“ C”之前(可能是字母顺序)?为了保留添加顺序,我必须做什么? 问题答案: 您不能有订单集。而且没有办法告诉Python如何订购它。检查此答案以找到替代方法。

  • 问题内容: 如果a不为空,则访问以下任意元素: 有什么更好的方法吗? 问题答案: 在Python 3上,非破坏性和迭代性地: 在Python 2上,非破坏性和迭代性地: 如果希望它在Python 2和3中都可以使用,则可以使用该包: 尽管在这一点上它还是很神秘的,但我还是更喜欢您的代码。 如果要删除任何项目,请执行以下操作: 请注意,“ first”在此处可能不是合适的术语,因为在Python <

  • 我正在尝试使用XlsxWriter将Python写入Excel工作簿。我有一本字典叫,它的键是元组。 我想在列中写入键(0,t)的值,但这些值不是按正常顺序显示的。例如,如果我的字典如下所示: 我进入Excel: 当我在第二个循环中严格确定了我希望如何编写我的值时,为什么会发生这种情况?

  • 问题内容: 考虑像这样的字典 例如,如何访问该词典的特定元素?例如,我想在格式化Apple的第一个元素(在我们的情况下仅是“ American”)之后打印第一个元素。 附加信息上面的数据结构是通过在python函数中解析输入文件创建的。一旦创建,它在该运行中将保持不变。 我在函数中使用此数据结构。 因此,如果文件发生更改,则下次运行此应用程序时,文件的内容将有所不同,因此此数据结构的内容将有所不同