Python 使用反向forloop(django)将项目插入字典
因此,我初始化了一个forloop,它在一系列对象上迭代,其中范围从1开始,以模型具有的最大字段数结束Python 使用反向forloop(django)将项目插入字典,python,django,data-structures,dictionary,Python,Django,Data Structures,Dictionary,因此,我初始化了一个forloop,它在一系列对象上迭代,其中范围从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变量使用mo
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: {'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'}
。因此,我在初始循环中使用了reversed()
(用于反向计数(范围(1,len(field_list))):
),但我的字典虽然从最后一个键值对开始,而不是第一个键值对,但最终输出与开始时相同
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'}
所以我想知道为什么会发生这种情况??默认情况下它会对我的字典排序吗??如果这种方法不起作用,我还可以采用什么其他方法呢?字典是无序的,所以不管您在字典中插入项目的顺序如何
标准库也有一个字典的有序版本,collections.OrderedDict
。也许你可以用它。字典是无序的,所以你在字典中插入项目的顺序无关紧要
标准库也有一个字典的有序版本,collections.OrderedDict
。也许你可以使用它。字典是无序的数据类型,由它们的键()索引,因此无论你将键添加到你的字典中的顺序是什么
关于和使用字典有一些很好的问题。字典是无序的数据类型,由它们的键()索引,因此无论您向dict添加键的顺序如何
在使用和使用方面存在一些重大问题。字典键是无序的。字典键是无序的。但除了美观之外,为什么要这样做(在我看来,这是计算能力的浪费)我不知道…我在django做这件事,我有很多模型和很多字段,因此我想在我的模板中以有序的方式呈现一切。所以是的,你可以说这是为了组织的美学。。。帮助用户更快地识别字段。总之,您提供的anwser非常有用!谢谢!啊,这让@per7inca1ousq更有意义。您可以做的一件事是实际返回这个无序的对象,然后使用Javascript在客户端对其进行排序(请参阅关于排序对象)。这使得用户可以通过其他键进行排序(例如,如果它在表或类似的表中)。只是一个想法……实际上,这是一个很好的想法,在客户端移动部分处理,从而提高性能。然而,我更关心数据的可靠性(JavaScript在这方面不是很可靠),因此我将在稍后阶段看到我将实现这种方法的程度。尽管你为什么要这样做而不是美观(在我看来,这是计算能力的浪费)我不知道…我在django做这件事,我有很多模型和很多字段,因此我想在我的模板中以有序的方式呈现一切。所以是的,你可以说这是为了组织的美学。。。帮助用户更快地识别字段。总之,您提供的anwser非常有用!谢谢!啊,这让@per7inca1ousq更有意义。您可以做的一件事是实际返回这个无序的对象,然后使用Javascript在客户端对其进行排序(请参阅关于排序对象)。这使得用户可以通过其他键进行排序(例如,如果它在表或类似的表中)。只是一个想法……实际上,这是一个很好的想法,在客户端移动部分处理,从而提高性能。然而,我更关心数据的可靠性(JavaScript在这方面不是很可靠),因此我将在稍后阶段看到我将在多大程度上实现这种方法。