我有以下代码:
for i in xrange(len(arr_id)):
list.append({'id': arr_id[i], 'porcentaje' : 0, 'estado' : 'En funcionamiento'})
如果我打印list
,我似乎得到按字母顺序排列的列表:
[{'estado': 'En funcionamiento', 'id': 0, 'porcentaje': 0}]
这与我定义的顺序不同:
[{'id': 0, 'porcentaje': 0, 'estado': 'En funcionamiento',}]
如何维持所需的订单?
答案 0 :(得分:2)
首先,列表将维护顺序,但列表中的字典不会,因为字典按定义是无序的。有一种名为OrderedDict
的数据类型可以保留顺序,但我怀疑你真的需要它。
其他一些评论:
请勿将list
用作变量名称。
不要像Python那样迭代C.你可以直接迭代:
for item in arr_id:
mylist.append({'id': item, 'porcentaje' : 0, 'estado' : 'En funcionamiento'})
甚至使用list comprehension:
mylist = [{'id': item, 'porcentaje' : 0, 'estado' : 'En funcionamiento'}
for item in arr_id]
答案 1 :(得分:0)
首先,你现在还没有处理清单。你正在处理嵌套在列表中的字典(这是没有意义的,因为列表中只有一个项目)
你不能“排序”一个词典,因为从键中获取它的价值太容易了。在你的情况下:
>>> x = {'estado': 'En funcionamiento', 'id': 0, 'porcentaje': 0}
>>> x['estado']
b"En funcionamiento"
所以没有必要对词典进行排序。
虽然你可以显示你的字典的排序表示。这只是为了印刷目的。
import operator
x = {'estado': 'En funcionamiento', 'id': 0, 'porcentaje': 0}
sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1))
或者正如其他答案所指出的那样,您可以使用OrderedDict来保留您的字典顺序。