我试图保持一个Python字典的顺序,因为本地dict
没有任何为了它。在SE答案很多使用OrderedDict
建议。
from collections import OrderedDict
domain1 = { "de": "Germany", "sk": "Slovakia", "hu": "Hungary",
"us": "United States", "no": "Norway" }
domain2 = OrderedDict({ "de": "Germany", "sk": "Slovakia", "hu": "Hungary",
"us": "United States", "no": "Norway" })
print domain1
print " "
for key,value in domain1.iteritems():
print (key,value)
print " "
print domain2
print ""
for key,value in domain2.iteritems():
print (key,value)
迭代后,我需要的字典保持其原有的秩序和打印键和值原文:
{
"de": "Germany",
"sk": "Slovakia",
"hu": "Hungary",
"us": "United States",
"no": "Norway"
}
无论哪种方式,我用不保留这个顺序,虽然。
您需要将其项目或插入项目的顺序,以 - 这是它是如何知道的顺序。尝试是这样的:
from collections import OrderedDict
domain = OrderedDict([('de', 'Germany'),
('sk', 'Slovakia'),
('hu', 'Hungary'),
('us', 'United States'),
('no', 'Norway')])
该阵列有一个顺序,因此OrderedDict会知道你想要的顺序。
在OrderedDict
情况下,要创建一个中间,定期(因此无序)的字典,然后才会慢慢传递给构造。为了保持秩序,你将不得不与秩序的东西传递给构造函数(例如一个元组的列表)或添加键一个接一个的(也许是在一个循环中)你想要的顺序。
您可以使用OrderedDict
但你必须采取考虑到OrderedDict
不会的正在运行的代码以外的地方工作。
这意味着,出口对象为JSON将失去OrderedDict
的所有影响。
你可以做的就是创建一个元数据阵列,可以在其中的密钥存储"de", sk", etc.
以有序的方式。通过浏览该阵列,以便您可以查字典正确,并在数组中的顺序将生存在JSON,YAML等任何出口
当前JSON:
{ "de": "Germany", "sk": "Slovakia", "hu": "Hungary", "us": "United States", "no": "Norway" }
新对象countries
:
countries = {
"names" : {
"de": "Germany", "sk": "Slovakia", "hu": "Hungary", "us": "United States", "no": "Norway"
},
"order" : [
"de", "sk", "hu", "us", "no"
]
}
代码,将为了打印长的名字:
for code in countries['order']:
print(countries['names'][code])
迟到的回答,但这里有一个qazxsw POI一个衬垫qazxsw由qazxsw芋泥芋泥字典不使用进口:
python 3.6+
输出:
sort
key