Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用反向forloop(django)将项目插入字典_Python_Django_Data Structures_Dictionary - Fatal编程技术网

Python 使用反向forloop(django)将项目插入字典

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

因此,我初始化了一个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
变量使用
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在这方面不是很可靠),因此我将在稍后阶段看到我将在多大程度上实现这种方法。