字典值不是有序的python

时间:2013-12-19 19:07:59

标签: python django

当我从数据库中获取数据时:

filteredData = NaseljenoMesto.objects.filter(naseljenomesto_drzava=1).values('id','sifraMesta','nazivMesta','naseljenomesto_drzava__naziv')

为什么输出值不符合上述顺序:

输出为:naseljenomesto_drzava__naziv,sifraMesta,nazivMesta,id

4 个答案:

答案 0 :(得分:3)

基本字典不维护广告订单。字典是"有序"通过键的哈希值而不是键的词法值。

答案 1 :(得分:2)

如果你需要一个维护插入顺序的字典,Python版本> = 2.7在集合模块中包含OrderedDict类。

常规字典:

>>> ud = {}
>>> ud['first'] = 1
>>> ud['second'] = 2
>>> ud['third'] = 3
>>> ud.values()
[2, 3, 1]

有序的词典:

>> from collections import OrderedDict
>>> od = OrderedDict()
>>> od['first'] = 1
>>> od['second'] = 2
>>> od['third'] = 3
>>> od.values()
[1, 2, 3]

答案 2 :(得分:2)

Python不维护秩序。如果您想要一个有序字典,请查看标准库中的collections模块:

import collections
d = collections.OrderedDict()

它的行为类似于您习惯的python词典,但保持顺序。

答案 3 :(得分:1)

在编程方面取得进展的某些方面,你会发现,如果订单对你很重要,那么你可能不得不重新考虑首先使用字典

相关问题