python字典奇怪地排序(想要非字母顺序)

因此,我尝试发送带有一些我放入字典中的键的数据包.这些需要按特定的顺序打印,因此我尝试制作一个函数来对其重新排序.我认为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]
上一篇:首页> C#>字典<>总是排序值,从键查找索引


下一篇:如何使用字典值在Python中进行正则表达式替换,其中键是同一字符串中的另一个匹配对象