如何对在url中发布的字典的键进行排序?

时间:2013-09-05 10:55:08

标签: python django

我在request.POST张贴了这个词:

<QueryDict: {u'csrfmiddlewaretoken': [u'fhvpUorGAl7LMv4JIJRd0WOEHPkKn6iN'], u'actor_1': [u'first_actor'], u'actor_5': [u'second_actor'], u'actor_55': [u'third_actor'], u'actor_2': [u'fourth_actor']}>

我想用按键排序

<QueryDict: {u'actor_1': [u'first_actor'], u'actor_2': [u'fourth_actor'], u'actor_5': [u'second_actor'], u'actor_55': [u'third_actor'], u'csrfmiddlewaretoken': [u'fhvpUorGAl7LMv4JIJRd0WOEHPkKn6iN']}>

有没有办法对词典的键(而不是值)进行排序?

3 个答案:

答案 0 :(得分:4)

如上所述,常见的词汇本质上是无序的,但您可以使用OrderedDicts。

import collections

d = {
    u'csrfmiddlewaretoken': [u'fhvpUorGAl7LMv4JIJRd0WOEHPkKn6iN'], 
    u'actor_1': [u'first_actor'], 
    u'actor_2': [u'fourth_actor']
}

collections.OrderedDict(sorted(d.items()))

答案 1 :(得分:2)

无法对字典进行排序。而是使用例如列表。

但是,您可以打印出使用以下内容排序的值:

d = {u'csrfmiddlewaretoken': [u'fhvpUorGAl7LMv4JIJRd0WOEHPkKn6iN'], 
 u'actor_1'            : [u'first_actor'], 
 u'actor_5'            : [u'second_actor'], 
 u'actor_55'           : [u'third_actor'], 
 u'actor_2'            : [u'fourth_actor']}

keys = d.keys()
keys.sort()
for key in keys:
   print d[key]

print keys

结果:

[u'first_actor']
[u'fourth_actor']
[u'second_actor']
[u'third_actor']
[u'fhvpUorGAl7LMv4JIJRd0WOEHPkKn6iN']
[u'actor_1', u'actor_2', u'actor_5', u'actor_55', u'csrfmiddlewaretoken']

显示所有已排序的值,最后一行显示已排序的键。

答案 2 :(得分:0)

没有。从根本上说,Python字典中的键是无序的。查看字典文档here