因此,我尝试发送带有一些我放入字典中的键的数据包.这些需要按特定的顺序打印,因此我尝试制作一个函数来对其重新排序.我认为python正在按我不想要的顺序进行重新排列,但是我不确定为什么.
我目前正在使用此功能来尝试实现这一目标.
def array_sort(array, sort): #yeah, it's array cuz i php like that.
ordered = {}
for i in range(0,len(sort)):
if sort[i] in array:
ordered[sort[i]] = array[sort[i]]
keys = array.keys()
return ordered
order = "l5,l4,l3,l2,q,y,k,k3,d1,z,p,c,b,d3,dt,N,n,a,h,v".split(',')
keys = array_sort(infos, order)
由于某种原因,这是行不通的,信息是按字母顺序排列的键列表,我只是不确定为什么该函数以奇数顺序输出键. (首先,当15应该是第一个:S时)
如果您知道一种更好的方法来告诉我,我是最近才开始使用python的,所以我并不那么熟悉.
编辑:
制作订单字典后,我可以立即以正确的顺序打印键.即使只是将其输出为字符串,该顺序也会被保留(暂时),您可以再次.split(),以正确的顺序获取字典(我认为).
for i in range(0, len(order)):
if order[i] in infos:
packet += order[i] + '="' + infos[order[i]] + '" '
解决方法:
由于Python中的字典是无序的,并且您所需要做的就是输出按指定规则排序的结果,因此您可以执行以下操作:
order = "l5,l4,l3,l2,q,y,k,k3,d1,z,p,c,b,d3,dt,N,n,a,h,v".split(',')
for key in order:
print key, infos.get(key)#if infos is your dictionary
或者您可以通过以下方式获取/传递列表而不是dict:
print [(key, infos.get(key)) for key in order]