这里我添加了一个代码生成xml_tags的顺序,这是我的输出是什么:不大不小的dictionary-声明它蟒蛇
md5 value = "sdfhsdkjgfjw35378563"
repOperation value = "push"
size value = "toolarge"
images value = "/home/rakesh/from_t_jack/imag1.ipds"
status value = "completed"
replication value = "mode"
sdlist value = "f:"
我用的字典。我无法得到正确的sort
我的字典。我希望按照我声明的顺序对字典进行排序和打印。 另外一个问题是,如果在第6行观察到输出,则输出有点逆转,我期待:mode value = "replication"
。但是输出是颠倒的。我不知道为什么它会以这种方式行事。我想知道如何解决这两个问题。这是我的代码。
def generate_tag(name,val):
full_tag = ''+name+' value = "'+val+'"'
return full_tag
def auto_xml(sdList,repOperation,images,status,md5):
tags = {'repOperationTag' :{'repOperation_tag_name':'repOperation' ,
'repOperation_val' : repOperation },
'modeTag' :{'mode_tag_name':'mode' ,
'mode_val' : 'replication' },
'imagesTag' :{'images_tag_name': 'images',
'images_val' : images },
'statusTag' :{'status_tag_name':'status' ,
'status_val' : status},
'sizeTag' :{'size_tag_name':'size' ,
'size_val' : 'toolarge'},
'md5Tag' :{'md5_tag_name' : 'md5' ,
'md5_val' : md5} ,
'sdListTag' :{'sdList_tag_name': 'sdlist' ,
'sdList_val' : sdList} }
count = 0
tag_len = len(tags)
while count < tag_len :
inner = tags[tags.keys()[count]]
tag_name = inner[inner.keys()[0]]
tag_val = inner[inner.keys()[1]]
full_tag = generate_tag(tag_name,tag_val)
print full_tag
count = count + 1
def myordered_dict():
from collections import OrderedDict
tags = {'A_repOperationTag' :{'tag_name':'repOperation' ,
'tag_val' : repOperation },
'B_modeTag' :{'tag_name':'mode' ,
'tag_val' : 'replication' },
'C_imagesTag' :{'tag_name': 'images',
'tag_val' : images },
'D_statusTag' :{'tag_name':'status' ,
'tag_val' : status},
'E_sizeTag' :{'tag_name':'size' ,
'tag_val' : 'toolarge'},
'F_md5Tag' :{'tag_name' : 'md5' ,
'tag_val' : md5} ,
'G_sdListTag' :{'tag_name': 'sdlist' ,
'tag_val' : sdList},
'H_machinename' :{'tag_name': 'hostname' ,
'tag_val' : 'xp_vm'} }
tags = OrderedDict(sorted(tags.items(), key=lambda t: t[0]))
词典不是有序的。但是有一个叫[ordered dictionaries]的变体(http://docs.python.org/2/library/collections.html#collections.OrderedDict),它可能会做你想做的。 – 2013-03-12 12:15:14
我的输出问题也与在字典中订购有关 – rakesh 2013-03-12 12:22:00
@rakesh - 是的。当你执行'inner.keys()[0]'时,你假定'inner'保持它的插入顺序,而实际上它没有。 – mgilson 2013-03-12 12:23:48