Python列表更改顺序
我有以下代码:Python列表更改顺序,python,list,dictionary,Python,List,Dictionary,我有以下代码: for i in xrange(len(arr_id)): list.append({'id': arr_id[i], 'porcentaje' : 0, 'estado' : 'En funcionamiento'}) 如果我打印列表似乎会得到一个按字母顺序排列的列表: [{'estado':'En functionamiento','id':0',procentaje':0}] 这与我定义的顺序不同: [{'id':0,'procentaje':0,'estado'
for i in xrange(len(arr_id)):
list.append({'id': arr_id[i], 'porcentaje' : 0, 'estado' : 'En funcionamiento'})
如果我打印列表
似乎会得到一个按字母顺序排列的列表:[{'estado':'En functionamiento','id':0',procentaje':0}]
这与我定义的顺序不同:[{'id':0,'procentaje':0,'estado':'En functionamiento',}]
如何保持所需的顺序?首先,列表将保持顺序,但列表中的词典不会,因为根据定义,词典是无序的。有一个名为的数据类型可以保持顺序,但我怀疑您是否真的需要它 其他一些评论: 不要将
list
用作变量名
不要像Python是C一样迭代。您可以直接迭代:
for item in arr_id:
mylist.append({'id': item, 'porcentaje' : 0, 'estado' : 'En funcionamiento'})
甚至可以使用:
首先,你现在不是在处理清单。您正在处理嵌套在列表中的词汇表(这是毫无意义的,因为列表中只有一项) 你不能“排序”一个单词,因为它太容易从一个键中得到它的值。就你而言:
>>> x = {'estado': 'En funcionamiento', 'id': 0, 'porcentaje': 0}
>>> x['estado']
b"En funcionamiento"
因此,没有必要对措辞进行分类
虽然您可以显示您的dict的排序表示。但它仅用于打印目的
import operator
x = {'estado': 'En funcionamiento', 'id': 0, 'porcentaje': 0}
sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1))
或者,正如其他答案所指出的,您可以使用一个命令来保留您的命令的顺序。Python字典没有设置的顺序。为什么需要维护字典键顺序?您正在对只有一项的列表进行排序,这是一个字典序列。Python dictionnary没有Martinjn指出的“顺序”。因为这创建了一个
json
,我需要一个准确的顺序才能在Java中读取它们。@Borja:json对象也没有顺序。即使您对键进行了排序,Java也可以自由地以不同的顺序对它们进行解码。@Borja:如果顺序很重要,请使用键值元组列表。
import operator
x = {'estado': 'En funcionamiento', 'id': 0, 'porcentaje': 0}
sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1))