【发布时间】:2014-02-12 09:26:24
【问题描述】:
所以我已经初始化了一个循环遍历一系列对象,其中范围从 1 开始并以模型具有的最大字段数结束
for count in range(1, len(field_list)):
f_val = getattr(instance, field_list[count])
field_values[field_list[count]] = f_val
print "field_values: ", field_values
f_val 变量使用model_instance.field_name 计算字段值,并将字段名称和字段值作为键值对插入“field_values”字典中。当我打印field_values 时,我得到:
field_values: {'descr': u'ggg'}
field_values: {'descr_en': u'sg', 'descr': u'ggg'}
field_values: {'notes': u'ddddf', 'descr_en': u'sg', 'descr': u'ggg'}
所以我现在要做的是反转键值对的顺序,这样我就有{'descr': u'ggg', 'descr_en': u'sg', 'notes': u'ddddf'}。因此,我在初始循环(for count in reversed(range(1, len(field_list))):)中使用了reversed(),但我的字典虽然以最后一个键值对而不是第一个键值对开头,但最终输出与开始时相同。
field_values: {'notes': u'ddddf'}
field_values: {'notes': u'ddddf', 'descr_en': u'sg'}
field_values: {'notes': u'ddddf', 'descr_en': u'sg', 'descr': u'ggg'}
所以我想知道为什么会这样?默认情况下它会对我的字典进行排序吗?如果这种方法不起作用,我还能遵循哪些其他方法?
【问题讨论】:
-
字典键是无序的。
标签: python django data-structures dictionary